https://blog.csdn.net/truong/article/details/50083147
https://zhuanlan.zhihu.com/p/28055974
https://www.liaoxuefeng.com/article/00141939241051502ada88137694b62bfe844cd79e12c32000
https://zhuanlan.zhihu.com/p/33754299
https://juejin.im/post/5addc7a66fb9a07aa43bd2a0
https://www.jianshu.com/p/2949db9c3df5
http://www.importnew.com/14857.html
http://www.importnew.com/14140.html
Java 8仍然延用了ISO的日历体系,并且与它的前辈们不同,java.time包中的类是不可变且线程安全的。新的时间及日期API位于java.time包中,下面是里面的一些关键的类:
- Instant——它代表的是时间戳
- LocalDate——不包含具体时间的日期,比如2014-01-14。它可以用来存储生日,周年纪念日,入职日期等。
- LocalTime——它代表的是不含日期的时间
- LocalDateTime——它包含了日期及时间,不过还是没有偏移信息或者说时区。
- ZonedDateTime——这是一个包含时区的完整的日期时间,偏移量是以UTC/格林威治时间为基准的。
Instant:时间戳
Duration:持续时间,时间差
LocalDate:只包含日期,比如:2016-10-20
LocalTime:只包含时间,比如:23:12:10
LocalDateTime:包含日期和时间,比如:2016-10-20 23:14:21
Period:时间段
ZoneOffset:时区偏移量,比如:+8:00
ZonedDateTime:带时区的时间
Clock:时钟,比如获取目前美国纽约的时间
以及java.time.format包中的
DateTimeFormatter:时间格式化
新的库还增加了ZoneOffset及Zoned,可以为时区提供更好的支持。有了新的DateTimeFormatter之后日期的格式化也变得焕然一新了。
Year类
// Year类
// 当前年份
Year year = Year.now();
System.out.println(year);
// 指定年份
System.out.println(Year.of(2018));
// 判断年份是否是闰年
System.out.println(Year.isLeap(2018));
// 返回年份的天数
System.out.println(year.length());
// 年份的加减
System.out.println(year.plusYears(2));
System.out.println(year.minusYears(2));
Month类
// Month类
// enum类里定义了12个月份
Month may = Month.MAY;
// 返回这个月份的数值,1月份是1
System.out.println(Month.JANUARY.getValue());// 1
System.out.println(may.getValue());//5
// 月份加减
System.out.println(may.plus(1));//JUNE
// 当超过12时,取余数 (int) (months % 12)
System.out.println(may.plus(12));//MAY
System.out.println(may.minus(1));//APRIL
// 返回月份的第一天是一年中的第n天
System.out.println(may.firstDayOfYear(true));//122
// 返回该月最小和最大的天数,主要区别在2月
System.out.println(may.minLength());//31
System.out.println(may.maxLength());//31
System.out.println(Month.FEBRUARY.minLength());//28
System.out.println(Month.FEBRUARY.maxLength());//29
网友评论