电脑@如何处理计算机中的日期和时间问题?( 五 )
除此之外 , 我们还可以通过 of() 函数指定日期和时间创建 LocalDateTime:
本文插图
LocalDateTime 存储了当前的日期信息和时间信息 , 如果我们只需要当前日期或当前时间 , 可以使用 LocalDate 和 LocalTime:
本文插图
同 LocalDateTime 类一样 , LocalDate 和 LocalTime 类也可以通过 now()、parse()、of() 方法创建 。
LocalDateTime 在加减日期时 , 可以采用简洁的链式调用:
本文插图
和 Calendar 一样 , LocalDateTime 在加减时 , 仍然会自动调整日期:
本文插图
与 Calendar 不同的是 , LocalDateTime 是不可变类 , 如此例中调用 minusMonths(1) 和 plusMonths(1) 方法后 , dt 的值并没有改变 , 这个函数返回的是一个调整后的新值 , 我们将这个新值赋值给了 dt2 。
对应 Calendar 的 set() 方法 , LocalDateTime 调整时间使用 withXxx() 方法:
- 调整年:withYear()
- 调整月:withMonth()
- 调整日:withDayOfMonth()
- 调整时:withHour()
- 调整分:withMinute()
- 调整秒:withSecond()
本文插图
LocalDateTime 还有一个 with() 方法允许我们做更复杂的运算:
本文插图
要比较两个日期的先后 , 可以使用 LocalDateTime 的 isBefore()、isAfter() 方法:
本文插图
4.2. ZonedDateTime LocalDateTime 和 Date 类一样 , 总是表示本地时区的时间 , 如果要表示带时区的时间 , 需要使用 ZonedDateTime , 它相当于 LocalDateTime + ZoneId 。 LocalDateTime 提供的方法 , 如 now()、of()、plusDays() 等 , ZonedDateTime 也都提供 。
ZonedDateTime 的使用:
本文插图
ZonedDateTime 通过 now() 函数获取当前时区的时间 , 通过 now(ZoneId zone) 函数获取指定时区的时间 。 这样获取到的两个时间虽然时区不同 , 但表示的都是同一时刻(毫秒数不同是由于执行代码会花费一点时间) 。
通过给 LocalDateTime 设置 ZoneId , 也可以创建出 ZonedDateTime:
本文插图
通过这种方式创建的 ZonedDateTime 日期和时间一样 , 但时区不同 , 所以表示的是两个不同时刻 。
ZonedDateTime 可以通过 toLocalDateTime() 函数转换成 LocalDateTime:
本文插图
我们看到 , ZonedDateTime 转换成 LocalDateTime 时 , 不会自动切换成本地时区的时间 , 而是直接丢弃时区信息 。
由于 ZonedDateTime 自带时区信息 , 所以在涉及时区转换时使用 ZonedDateTime 非常方便 。 如上文中提到的将纽约时间转换成的东京时间 , 使用 ZonedDateTime 实现如下:
推荐阅读
- 人民网@【战“疫”说理】疫情防控中如何有效实现经济复苏?
- 太平洋电脑网:不止于高功率+金牌,爱国者ES650还能保5年,爱了爱了
- [笔记本电脑]乙辰科技正式发布首款WiFi6新品:北斗II号分布式无线路由器
- 2020@2020 iPhone SE终于来了?A13处理器+三种配色
- 高通865处理器PK麒麟990处理器 集成5G才是王道
- 找果网■就是牛!10.2英寸IPAD在第四季度撑起全球平板电脑市场
- 『车家号』高低功率如何选?后期改装就能“低变高”了吗?,同一款发动机
- #浦江头条#“大龄书僮”们还好吗?,网课一月间孩子手机平板电脑敞开用
- 手机、眼镜如何消毒?清洁要从细节做起
- 『音频』iOS如何导入百度云的音频(易剪和易剪多轨版)
