20145308刘昊阳 《Java程序设计》第7周学习总结

教材学习内容总结

第13章 时间与日期

13.1 认识时间与日期

13.1.1 时间的度量
  • 格林威治时间(GMT)
  • 世界时(UT)
  • 国际原子时(TAI)
  • 世界协调时间(UTC)
  • Unix时间:Unix系统的时间表示法
  • epoch:来自于Unix的系统、平台、软件等选用这个时间作为时间表示法的起算点

    13.1.2 年历简介
  • 儒略历
  • 格里高利历
  • ISO 8601标准

    13.1.3 认识时区
  • 日光节约时间

    13.2 认识DataCalender

    13.2.1 时间轴上瞬间的Data
  • 使用System.currentTimeMillis()方法,取得系统时间,返回 long 类型整数
  • 使用Date实例取得系统时间描述,Date有两个构造函数,一个可使用epoch毫秒数构建,另一个为无自变量构造函数(内部亦是使用System.currentTimeMiilis()取得eqoch毫秒数),调用getTime()可取得内部保存的epoch毫秒数值
  • setTime()(用来设置epoch毫秒数)
  • 字符串时间格式的处理

    13.2.2 格式化时间日期的DataFormat
  • java.text.DateFormat复责字符串时间格式处理,DataFormat是个抽象类,其操作类为java.text.SimpleDataFormat,可以直接构建SimpleDataFormat实例,或是使用DataFormatgetDataInstance()getTimeInstance()getDataTimeInstance()等静态用法
  • getDateInstance()getTimeInstance()getDataTimeInstance()等静态方法主要是取得不同详细程度的日期时间,取得DataFormat实例时,也可以指定Locale实例,将日期时间格式化为指定的语系方式
  • 直接构建SimpleDateFormat的好处是可使用模式字符串自定义格式
  • SimpleDateFormatparse()方法,按照SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例

    13.2.3 处理时间日期的Calendar
  • Calendar实例取得某个时间日期信息,或者对时间日期进行操作
  • Calendar是个抽象类,java.util.GregorianCalendar是其子类,通过CalendargetInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例
  • 取得Calendar实例后,可以使用getTime()取得Date实例,使用get()方法并指定Calendar上的字段枚举常数
  • 设定时间日期,不要对Date设定,应该使用Calendar,月份的部分使用枚举常数定义
  • 取得Calendar实例后,使用add()方法,改变Calendar的值,只针对日期中的某个字段加减,使用roll()方法
  • 日历时间可以使用GregorianCalendarsetGregorianCalendar()方法来修改,设为Date(Long.MAX_VALUE)为纯粹的儒略历,Date(Long.MIN_VALUE)是纯粹的格里高利历
  • 比较两个Calendar的时间日期先后,使用after()before()方法

    13.2.4 设定TimeZone
  • java.util.TimeZonegetDefault()来取得默认时区信息
  • 取得指定时区的TimeZone实例,可以使用ID字符串
  • TimeZone.getAvaliableIDs()取得可用的ID,返回String[]
  • Calender在调用getInstance()时可以指定Timezone,如果已经取得Calender实例,可以通过setTimeZone()的方法设定时区

    13.3 JDK8新时间日期API

    13.3.1 机器时间观点的API
  • Date是机器的时间观念
  • 日期处理API主要套件命名java.time,机器相关的时间概念Instant
  • 使用Instant的静态方法now()取得Instant实例,ofEpochMilli()可以指定Java epoch毫秒数,ofEpochSecod()指定秒数
  • 取得Instant实例后,可以使用plusSecond()``plusMillis()``plusNanos()``minusSeconds()``minusMillis()``MinusNanos()做时间轴上的运算,返回新的Instant实例,代表运算后的时间

    13.3.2 人类时间观点的API
  • 1.LocalDateTimeLocalDateLocalTime
  • 对于片段的时间日期时间的描述,不具时区的时间与日期定义
  • 2.ZonedDateTimeOffsetDateTime
  • 基于LocalDateTimeLocalDateLocalTime来补齐缺少的时区信息
  • Instant通过atZone()``atOffset()转化成ZonedDateTime和OffsetDateTime,ZonedDateTime和OffsetDateTime可通过toInstant()取得Instant,ZonedDateTime和OffsetDateTime都有toLocalDate()``toLocalTime()``toLocalDateTime()取得localDate、localTime、localDateTime
  • 3.Year``YearMonth``Month``Mothday
  • Month是enum类型,取得代表月份的数字,不要使用oridinal()方法(enum在定义时的顺序,从0开始),使用getValue()方法

    13.3.3 对时间的运算
  • 1.TemporaAmount
  • 操作类Period``Duration
  • 时间计量,新时间和日期用API用类Duration来定义,对于年、月、日、星期的日期差,可使用Period类定义(静态方法ofDays()``ofMonths()``ofWeeks(),返回Period实例)
  • plus()方法接受java.time.temporal.TemporalAmount实例
  • 2.TemporalUnit
  • plus()方法的另一重载版本,接受java.time.temporal.TemporalUnit实例,java.time.temporal.ChronoUnit是其实做类,使用enum实做
  • 3.Temporal
  • plus()定义在Temporal接口上
  • 4.TemporalAccessor
  • 定义了只读的时间对象读取操作

    13.3.4 年历系统设计
  • java.time套件中的类在需要实行年历系统时采用单一ISO8601年历系统

    教材学习中的问题和解决过程

  • 问题:p440程序中增强for循环语句含义
  • 解决过程:将values()方法取得的结果依次赋给新建的Month类型封装的month对象

    本周代码托管截图




代码调试中的问题和解决过程

  • 问题:p438代码,取得时间信息为什么用了两个getTime()
  • 解决过程:第一个getTime()是Calendar实例方法,返回Date实例,第二个getTime()是Date实例方法,通过Date实例取得epoch毫秒数

其他(感悟、思考等,可选)

  • 本周学习的知识一开始讲一些有关时间的各种历法的理论知识,有些觉得没有太大用处就快速看过了,结果看到后面机器时间与人类时间的不同时就理解不了了,没办法只能回头再看一遍
  • 感受到了自己真正积极主动一行行的敲代码,才没能理解,达到敲代码的真正目的

学习进度条

代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
目标 5000行 30篇 400小时
第一周 30/30 1/2 16/16 基本概念
第二周 100/130 1/3 18/34 基础语法
第三周 100/230 1/4 26/60 对象封装
第四周 300/530 1/5 30/90 继承接口
第五周 300/830 1/6 30/120 异常MapCollection
第六周 300/1230 2/8 30/150 输入输出、并行
第七周 100/1330 2/10 10/160 时间日期

20145308刘昊阳 《Java程序设计》第7周学习总结的更多相关文章

  1. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  2. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  3. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  4. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  5. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

  6. 20145337 《Java程序设计》第九周学习总结

    20145337 <Java程序设计>第九周学习总结 教材学习内容总结 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC可以 ...

  7. 20145337 《Java程序设计》第二周学习总结

    20145337 <Java程序设计>第二周学习总结 教材学习内容总结 Java可分基本类型与类类型: 基本类型分整数(short.int.long).字节(byte).浮点数(float ...

  8. 20145218《Java程序设计》第一周学习总结

    20145218 <Java程序设计>第一周学习总结 教材学习内容总结 今天下午看了Java学习的视频,感觉很是新奇,之前觉得Java学起来是艰难枯燥的,但通过第一章的学习觉得如果自己可以 ...

  9. 《Java程序设计》第九周学习总结

    20145224 <Java程序设计>第九周学习总结 第十六章 整合数据库 JDBC入门 ·数据库本身是个独立运行的应用程序 ·撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的 ...

  10. 《Java程序设计》第二周学习总结

    20145224陈颢文<Java程序设计>第二周学习总结 教材学习内容总结 一.类型.变量与运算符 1.类型 整数: 可细分为为short整数(占2字节),int整数(占4字节),long ...

随机推荐

  1. C#回顾 - 2.NET的IO:Path、File、FileInfo、Directory、DirectoryInfo、DriveInfo、FileSystemWatcher

        1.管理文件系统 一般而言,应用程序都会有保存数据.检索数据的需求. 1.1 使用 path 类来访问文件路径 [path常用的方法]:http://www.cnblogs.com/tangg ...

  2. .net转的时间戳用java去解析的代码

    /// <summary> /// 转换成java解析一致的时间戳 /// </summary> /// <param name="time"> ...

  3. <转>Oracle SQL性能优化

    原文链接:http://www.cnblogs.com/rootq/archive/2008/11/17/1334727.html (1)      选择最有效率的表名顺序(只在基于规则的优化器中有效 ...

  4. linux环境下libevent的使用

    step1:安装libevent yum install libevent step2: 代码入下: #include <sys/socket.h> #include <sys/ty ...

  5. 为GDI函数增加透明度处理

    用户对客户端的UI的要求越来越高,采用alpha通道对前景背景做混合是提高UI质量的重要手段. UI开发离不开GDI,然后要用传统的GDI函数来处理alpha通道通常是一个恶梦:虽然有AlphaBle ...

  6. hdu 3183(贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3183 思路:比较前后两个相邻的字符,如果前面一个字符大于后面一个字符,就把它去掉. #include ...

  7. unable to access android sdk add-on list

    在bin\properties里添加disable.android.first.run=true

  8. python学习-爬虫

    转载自 静觅的博客 最普通下载网页 import urrlib2 response = urllib2.urlopen("http://www.baidu.com") print ...

  9. 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)

    PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段.下边小甲鱼将为大家详细讲解哈~ (视频教程:http://fishc.co ...

  10. loadrunner解决在项目中的难点解决

    代码如下: vuser_init() { lr_save_string("11041331\",\"11041372\",\"11041373\&qu ...