LocalDateTime 的常用操作
对于日期时间,一直困扰着很多编程语言和开发者。要怪就怪地球公转与自转的规律如此不协调以及人类为什么发明出这么多不相容的历法。对于 Java,很早以前就有了很多描述日期、时间的类了,如 java.util.Date
、java.util.Calendar
等。现如今,最好使用 java.time.LocalDateTime
。LocalDateTime 是 Java 8 引入的一种日期类。在功能上,它可以分解为 LocalDate、LocalTime 两个类。前者表示年、月、日,后者表示时、分、秒、纳秒。因此,LocalDateTime 可以将时间从年一直精确到纳秒,可以说很强大了!
本文将给出关于 LocalDateTime 的常用操作。(注意:1 秒 = 10 9 ^9 9 纳秒。)
判断两个 LocalDateTime 是否是同一天
public static boolean isTheSameDay(LocalDateTime first, LocalDateTime second) {
var firstDay = first.toLocalDate();
var secondDay = second.toLocalDate();
return firstDay.equals(secondDay);
}
判断一个 LocalDateTime 是否是今天
其中,方法 isTheSameDay 是自定义方法,实现已在上面给出。
public static boolean isToday(LocalDateTime dateTime) {
return isTheSameDay(LocalDateTime.now(), dateTime);
}
将 Date 对象转化为 LocalDateTime
由于一个旧 API 的限制,有时候可以直接获得的对象只能是 Date 对象,这个时候就需要将 Date 对象转化为 LocalDateTime。其中,ZoneId 为时区。
public static LocalDateTime date2LocalDateTime(Date date, ZoneId zoneId) {
return date.toInstant().atZone(zoneId).toLocalDateTime();
}
如果只使用中国的时区,可以不提供时区形参。(其中,方法 date2LocalDateTime(Date date, ZoneId zoneId)
是自定义方法,实现已在上面给出。)
public static LocalDateTime date2LocalDateTime(Date date) {
return date2LocalDateTime(date, ZoneId.of("Asia/Shanghai"));
}