20145129 《Java程序设计》第6周学习总结
教材学习内容总结
- 认识时间与日期
- 时间的度量:时间基准有格林威治标准时间、世界时、国际原子时、世界协调时间Unix时间、epoch。
- 目前来说,即使标注为GMT(无论是文件说明,或是API的日期时间字符串描述),实际上谈到时间指的是UTC时间。
- 秒的单位定义是基于TAI。
- UTC考虑了地球自转越来越慢而有闰秒修正,确保UTC与UT相差不会超过0.9秒。
- Unix时间是1970年1月1日00:00:00为起点而经过的秒数,不考虑闰秒。
- 年历简介:历法有儒略历、格里高利历、ISO 8601标准。
- 认识时区
- 时间的度量:时间基准有格林威治标准时间、世界时、国际原子时、世界协调时间Unix时间、epoch。
- 认识Data与Calendar
- 时间轴上瞬间的Data
- 获取系统时间方法之一是使用System.currentTimeMillis()方法,返回的是long类型整数。
- 格式化时间日期的DataFormat:DateFormat是个抽象类,其操作类是java.text.SimpleDateFormat。可以直接构建SimpleDateFormat实例,或是使用DateForma的getDataInstance()、getTimeInstance()、getDataTimeInstance()等静态方法。
- 直接构SimpleDateForma好处是可使用模式字符串自定义格式。
- SimpleDateFormat有个parse()方法,可构建SimpleDateFormat时指定的格式,将指定的字符串剖析为Date实例。
- 处理时间日期的Calendar
- 若要取得某个时间日期信息,或者是对时间日期进行操作,可以使用Calendar实例。
- Calendar是抽象类,java.util.GregorianCalendar是其子类,操作了儒略历和格里高利历的混合历。
- 通过Calendar的getInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例。取得Calendar实例后,可以使用getTime()取得Date实例。
- 设定时间日期等字段,不能对Data设定,应该使用Calendar,用枚举常数设定。
- 取得Calendar实例后,可以使用add()方法,来改变Calendar。
- 只针对日期中某个字段加减,则可以使用roll()方法。
- 想要比较两个Calendar的时间日期先后,可以使用after()或before()方法。
- 设定TimeZone
- 在使用Calendar时,并没有使用时区信息,这时候会使用默认时区,使用java.util.TimeZone的getDefault()来取得默认时区信息。
- 时间轴上瞬间的Data
- JDK8新时间日期API
- 机器时间观点的API:JDK8新时间日期处理API的主要套件名为java.time。
- 人类时间观点的API
- LocalDateTime、LocalDate和LocalTime:JDK8新时间与日期API有LocalDateTime(包括日期与时间)、LocalDate(只有日期)、LocalTime(只有时间)等类来定义,是不具有时的时间与日期定义。
- ZoneDateTime和OffseDateTime:ZoneDateTime与OffseDateTime间可以通过toXXX()方法互转。
- Year、YearMonth、Month和MonthDay:想要取得代表月份的数要通过getValue()方法。
- 对时间的运算
- TemporalAmount
- TemporalUnit
- Temporal
- TemporalAccessor:定义了只读的时间对象读取操作。
-
年历系统设计:java.time套件中的类在需要实行年历系统时都是采用单一的ISO8601年历系统。
教材学习中的问题和解决过程
这一章比较好理解,暂时没有问题
代码调试中的问题和解决过程
代码已托管http://git.oschina.net/l_cat_1/Time/tree/master
其他(感悟、思考等,可选)
实践能进步,有问题先自己学习解决,不懂再问,这样可以提高学习独立性。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3000行 | 15篇 | 300小时 | |
第一周 | 50/50 | 2/2 | 14/14 | |
第二周 | 100/150 | 1/3 | 10/24 | |
第三周 | 300/450 | 1/4 | 15/39 | |
第四周 | 350/800 | 1/5 | 50/74 | |
第五周 | 200/1000 | 1/6 | 30/104 | |
第六周 | 500/1500 | 2/8 | 26/130 | |
第六周 | 200/1700 | 2/10 | 20/130 |