JDK8新的时间处理接口概述

JDK1.8 之前支持的时间操作:

  • System.currentTimeMillis() :表示自1970年1月1日起的当前日期和时间(以毫秒为单位)。
  • java.util.Date :表示特定时间点,以毫秒为单位。
  • java.util.Calendar :一个抽象类,提供用于在实例之间进行转换并以不同的方式处理日历字段的方法。
  • java.text.SimpleDateFormat :来格式化和解析日期。
  • java.util.TimeZone :代表时区偏移量,还可以计算出夏令时。

问题

  • 一个Date类应代表一个日期,但它代表一个具有小时,分钟和秒的实例。
  • Date没有任何关联的时区。它会自动选择默认时区。
  • 类是可变的。
  • 日期格式化类也不是线程安全的。
  • 和java.sql.Date重名
  • 使用其他时区创建日期非常棘手,通常会导致错误的结果。
  • 月使用从零开始的索引,让人费解

jdk8的新api

  • java.time.LocalDate:表示ISO日历中的年月日,对于表示没有时间的日期很有用。它可用于表示仅日期的信息,例如出生日期或结婚日期。
  • java.time.LocalTime:仅按时交易。它对于表示基于人的时间(例如电影时间或本地图书馆的开放和关闭时间)很有用。
  • java.time.LocalDateTime:处理日期和时间,没有时区。它是LocalDate和LocalTime的组合。
  • java.time.ZonedDateTime:将LocalDateTime类与ZoneId类中提供的区域信息结合在一起。它代表完整的日期时间戳以及时区信息。
  • java.time.OffsetTime :处理时间与格林威治/ UTC有相应时区偏移的时间,而没有时区ID。
  • java.time.OffsetDateTime :处理日期和时间,该日期和时间具有与格林威治/ UTC相对应的时区偏移,但没有时区ID。
  • java.time.Clock:提供对任何给定时区中的当前时刻,日期和时间的访问。尽管使用Clock类是可选的,但是此功能使我们可以测试其他时区的代码,也可以使用时间不变的固定时钟来测试您的代码。
  • java.time.Instant:表示时间轴上的纳秒的开始(自EPOCH开始),对于生成表示机器时间的时间戳很有用
  • java.time.Duration :两个瞬间之间的差异,以秒或纳秒为单位,并且不使用基于日期的构造,例如年,月和日,尽管该类提供了转换为天,小时和分钟的方法。
  • java.time.Period :以基于日期的值(年,月,日)定义日期之间的差异。
  • java.time.ZoneId:指定时区标识符,并提供在Instant和LocalDateTime之间进行转换的规则。
  • java.time.ZoneOffset :指定相对格林威治/ UTC时间的时区偏移量。
  • java.time.format.DateTimeFormatter:提供了许多预定义的格式化程序,或者我们可以定义自己的格式化程序。它提供parse()或format()方法来解析和格式化日期时间值。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值