避免使用传统日期时间类
可怕的
java.util.Date
阶级早在几年前就被现代社会所取代
java.time
JSR310中定义的类。
在该类的众多缺陷中
Date
用词不当。类表示从UTC偏移0小时-分-秒的时刻。所以它总是有一天中的某个时间,加上零的偏移量。
java.time.LocalDate
如果要表示只包含日期、不包含时间、不包含偏移量或时区的值,请使用现代类
java.time.LocalDate
。
从瞬间确定日期
当递给
日期类型
对象,立即转换为其现代替代品,
java.time.Instant
。使用添加到旧类中的新转换方法。
Instant instant = myJavaUtilDate.toInstant() ;
若要确定日期,必须指定时区。在任何特定时刻,全球各地的日期都会因时区而异。明天
Asia/Tokyo
在昨天同时
America/Edmonton
。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ; // Specify your time zone of interest.
ZonedDateTime zdt = instant.atZone( z ) ;
提取您想要的仅限日期的值。
LocalDate ld = zdt.toLocalDate() ;
比较
LocalDate
对象使用
isEqual
,
isBefore
和
isAfter
方法。
搜索以了解更多信息。所有这些都已经在Stack Overflow上进行了多次报道。