20145325张梓靖 《Java程序设计》第7周学习总结
20145325张梓靖 《Java程序设计》第7周学习总结
教材学习内容总结
- 时间的度量 格林威治时间,简称GMT时间,由观察太阳而得来;世界时,UT;国际原子时,TAI;世界协调时间,UTC;Unix时间,以1970年1月1日00:00:00为起点而经过的秒数,不考虑闰秒修正;epoch,以1970年1月1日00:00:00为起点而经过的毫秒数。
- 年历简介 儒略历,四年一闰;格里高利历改革了儒略历;ISO 8601标准在数据定义上大部分与格里高利历相同。
- 认识时区 日光节约时间。
- Date 使用Date实例的各getTime可以获得epoch毫秒数,**Data实例只用来当做时间轴上的某一瞬间;利用DataFormat可以对字符串格式进行处理,分别有GetDateInstance、GetTimeInstance、GetDateTimeInstance
- DateFormat
java.text.DateFormat
复责字符串时间格式处理,DataFormat是个抽象类,其操作类为java.text.SimpleDataFormat
,getDataInstance()、getTimeInstance()、getDataTimeInstance()等静态用法;可以直接构建SimpleDataFormat实例,或是使用DataFormat的;直接构建SimpleDateFormat,可以自定义字符串格式 parse方法可以将指定的字符串剖析Date实例 - Calendar Calendar实例取得某个时间日期信息,或者对时间日期进行操作;Calendar是个抽象类,java.util.GregorianCalendar是其子类,通过Calendar的getInstance()取得的Calendar实例,默认就是取得GregorianCalendar实例;比较两个Calendar的时间日期先后,使用after()或before()方法;取得Calendar实例后,可以取得年月日信息,可以进行设定,可以进行运算来改变。
- TimeZone TimeZone的getdefault可以取得默认时区的信息;Calender在调用getInstance()时可以指定Timezone,如果已经取得Calender实例,可以通过setTimeZone()的方法设定时区。
- 机器时间观点的API Date实例只代表机器观点的时间信息;使用Instant的静态方法now()取得Instant实例,ofEpochMilli()可以指定Java epoch毫秒数,ofEpochSecod()指定秒数;取得Instant实例后,可以使用plusSecond()、plusMillis()、plusNanos()、minusSeconds()、minusMillis()、MinusNanos()做时间轴上的运算,返回新的Instant实例,代表运算后的时间。
- 人类时间观点的API Date实例只代表机器观点的时间信息;在上面那些类的基础上可以使用ZonedDateTime等来进行补充;Month是enum类型,取得代表月份的数字,取得月份要通过getValue()方法,而不是使用oridinal()方法。
- TemporalAmount 时间计量,新时间和日期用API用类Duration来定义,对于年、月、日、星期的日期差,可使用Period类定义,静态方法ofDays()、ofMonths()、ofWeeks(),返回Period实例。
- TemporalUnit plus()方法的另一重载版本,接受java.time.temporal.TemporalUnit实例,java.time.temporal.ChronoUnit是其实做类,使用enum实做。
- Temporal plus()定义在Temporal接口上;Instant、LocalDate、LocalDateTime、LocatTime、OffsetTime、ZonedDateTime等类,都操作了 Temporal 接口。
- TemporalAccessor Temporal是 TemporalAccessor的子接口。
- 年历系统设计 DK8采用一年历系统设计,也就是说,java.time套件中的类在需要实行年历系统时都是采用单一的ISO8601年历系统。需要明确实行java.time.chrono.Chronology接口的类。
教材学习中的问题和解决过程
- 这章教材内容基本都能够理解
代码调试中的问题和解决过程
-
问题 P441 TemporalAmout 下方的代码
-
解决过程 按要求输入代码,并且表明了 ofPattern 的类名
结果显示有错误,但并不理解错误原因是什么
- 注释掉 ofPattern 那一句试试
可以成功通过,那假如用 SimpleDateFormat 的方法来代替代码中的 ofPattern
不可以的,结果显示不能将 Object 转成 Date
- 那就试试用 Calendar 来重新表达
终于是有可以成功的了。
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 3500行 | 28篇 | 300小时 | |
第一周 | 150/150 | 1/1 | 20/20 | |
第二周 | 100/250 | 1/2 | 22/42 | |
第三周 | 150/400 | 2/4 | 21/63 | |
第四周 | 1000/1400 | 1/5 | 27/90 | |
第五周 | 300/1700 | 1/6 | 22/102 | |
第六周 | 250/1950 | 2/8 | 22/124 | |
第七周 | 150/2100 | 2/10 | 20/144 |