20145314郑凯杰 《Java程序设计》第7周学习总结
教材学习内容总结
首先放上代码托管图片和本地代码图片:
插图4:
插图5:
插图6:
第十三章 时间与日期
13.1 认识时间与日期
时间的度量
- 格林威治标准时间GMT(Greenwich Mean Time)时间:现在不是标准时间
- 世界时(Universal Time,UT):1972年UTC出来之前,UT等价于GMT
- 国际原子时(TAI):秒的定义
- 世界协调时间(Corrdinated Universal Time, UTC): 闰秒,也就是铯原子辐射的振动次数。
- Unix时间: 1970.1.1 00:00:00开始的秒数
- epoch: java.util.Date epoch毫秒数
日历
- 公历
- 儒略历,修正罗马历每三年设置一闰年的错误,改为四年。
- 格里高利历,将儒略历1582年10月4号星期四的隔天,订为格里高利历1582年10月15日星期五。
- ISO 8601标准,例如yyyy-mm-ddTHH:MM:SS.SSS这样格式的时间日期表示方法的标准。
13.2 认识Date与Calendar
Date:
System.currentTimeMillis()
:1970年1月1日0时0分0秒0毫秒至今经过的毫秒数。
用书上的例子来演示:
插图1:
可调用getTime()
取得内部保存的epoch
毫秒数值:
格式化时间日期的DateFormat
Date
与DateFormat
Date
只用来获取epoch毫秒数
DateFormat
来格式化成人类理解的年月日时分秒
利用java.text.DateFormat
来处理有关字符时间格式的处理有两种方式:
一:构建SimpleDateFormat
实例,好处是可以使用模式字符串自定义格式。
二:使用DateFormat的getDateInstance ()
,getTimeInstance()
,getDateTimeInstance()
等静态方法。
Calendar: 时间的运算
getInstance()
:GregorianCalendar
getTime()
get()
add()
roll()
after()
before()
取得的Calendar实例后,用getTime()取得Date实例,如果要取得年月日等时间字段,可以使用get()方法并指定Calendar上的字段枚举常数。
运行CalenderUtil.java
插图2:
第十五章 通用API
日志: 日志对信息安全意义重大,审计、取证、入侵检测等都会用到日志信息
可以使用java.util.TimeZone
的getDefault()
来取得默认时区信息。
可以使用Instant
的静态方法now()
取得代表Java epoch
毫秒数的Instant
实例。
TemporalAmount
:时间差以Duration
定义,日期差以Period
定义。
Localization
本地化;Internationalization
(i18n)国际化
人类时间观点的API
LocalDateTime
包括日期与时间;LocalDate
只有日期,如果设定不存在的日期会抛出DateTimeException
;LocalTime
只有时间。
若需要时区信息,可基于上述三个时间描述的ZoneDateTime
和OffsetDateTIme
。
代码调试中的问题和解决过程
对于DateDemo.java
我们知道其中的.currentTimeMillis的用法是返回以毫秒为单位的当前时间。当返回值的时间单位是毫秒时,值的粒度取决于底层操作系统,并且粒度可能更大。
于是对其进行深究确认:
运行了两次就可以知道其区别:
插图1:
插图3:
所以就可以推断出返回以毫秒为单位的当前时间。
其他(感悟、思考等,可选)
本周的学习是JAVA较末尾的学习了。一晃眼,已经基本上学完了这厚厚的一本书。回首时间,才过了三分之一个学期,但是却完成了将近一学期的内容。这无论是对于哪方面来说,都是巨大的收获。虽然,真正掌握了多少我并不能确定。但是我相信,在下一次的实验中,在下一次的做项目中,我一定可以运用起我自己的所学的内容!
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 50/50 | 1/2 | 20/20 | |
第二周 | 700/600 | 2/4 | 38/38 | |
第三周 | 900/1100 | 1/7 | 60/60 | |
第四周 | 913/1350 | 1/9 | 90/90 |