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

时间:2021-09-02 19:21:15

20145129 《Java程序设计》第6周学习总结

教材学习内容总结

  • 认识时间与日期
    • 时间的度量:时间基准有格林威治标准时间、世界时、国际原子时、世界协调时间Unix时间、epoch。
      • 目前来说,即使标注为GMT(无论是文件说明,或是API的日期时间字符串描述),实际上谈到时间指的是UTC时间。
      • 秒的单位定义是基于TAI。
      • UTC考虑了地球自转越来越慢而有闰秒修正,确保UTC与UT相差不会超过0.9秒。
      • Unix时间是1970年1月1日00:00:00为起点而经过的秒数,不考虑闰秒。
    • 年历简介:历法有儒略历、格里高利历、ISO 8601标准。
    • 认识时区
  • 认识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()来取得默认时区信息。
  • 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