每个
Date类别均用于特定目的:
如果要在
SQL
/JDBC
上下文中使用日期,请使用java.sql.Timestamp
。java.util.Date
是旧的Java API,它不是线程安全的,您很难处理时间分区,最重要的是,它的设计不当:一种简单的统一性是,几个月从1开始,而几天从0开始。java.time.LocalDateTime
是一个不变的日期时间对象,它代表一个日期时间,通常将其视为年,月,日,时,分,分,您需要确切地将其表示。java.time.ZonedDateTime
class存储所有日期和时间字段,因此您可以使用它来处理诸如:27th January 1990 at 15:40.30.123123123 +02:00
欧洲/巴黎时区中的值。
为了完成您的任务,
ZonedDateTime该类将处理从本地时间线
LocalDateTime到的即时时间线
Instant(在时间线上对单个瞬时点进行建模)的转换。两条时间线之间的差异(由a表示)
ZoneOffset是与UTC
/格林威治标准时间的偏差。
要计算持续时间和期限:有,
java.time.Duration它是基于时间的时间量,例如“ 20.5秒”
java.time.Period,而是,它是基于日期的时间量(例如:26年,2个月和2天)。
要获取最大日期和最小日期,可以在以下方式中使用Java 8 lambda:
Date maxDate = list.stream().map(yourInstance -> yourInstance.date).max(Date::compareTo).get();Date minDate = list.stream().map(yourInstance -> yourInstance.date).min(Date::compareTo).get();



