原文: https://howtodoinjava.com/java/date-time/java-localdatetime-class/
Java 8 中引入的java.time.LocalDateTime
类,表示没有时区信息的本地日期时间对象。 它表示达到纳秒精度的时间,例如 2007-12-03T10:15:30:55.123456789
。
我们可以使用LocalDateTime
实例来表示时间,而无需任何时区引用。 例如,我们可以使用LocalDateTime
在任何应用程序中触发批处理作业。 作业将在服务器所在的时区中的特定时间执行。
实际上,为了使其更有用,我们应该将LocalDateTime
与其他信息(例如偏移或时区)一起使用。
1. LocalDateTime
类声明
public final class LocalDateTime
extends Object
implements Temporal, TemporalAdjuster, ChronoLocalDateTime<LocalDate>, Serializable
{
//class body
}
2. 如何创建LocalDateTime
通常,我们将在两种情况下创建LocalDateTime
实例,即获取当前时间或为指定时间戳创建本地日期时间。
2.1 获取当前时间
使用以下工厂方法获取当前本地日期时间。
LocalDateTime now = LocalDateTime.now();
2.2 创建指定时间
要创建具有特定日期和时间信息的本地时间,请使用以下方法。
//Milliseconds precision
LocalDateTime localDateTime1 =
LocalDateTime.of(2019, 03, 28, 14, 33, 48, 123456789);
//Month enum
LocalDateTime localDateTime2 =
LocalDateTime.of(2019, Month.MARCH, 28, 14, 33, 48, 123456789);
//seconds precision
LocalDateTime localDateTime3 =
LocalDateTime.of(2019, Month.MARCH, 28, 14, 33, 48);
//minutes precision
LocalDateTime localDateTime4 =
LocalDateTime.of(2019, Month.MARCH, 28, 14, 33);
//local date + local time
LocalDate date = LocalDate.of(2109, 03, 28);
LocalTime time = LocalTime.of(10, 34);
LocalDateTime localDateTime5 = LocalDateTime.of(date, time);
3. 如何将字符串解析为LocalDateTime
LocalDateTime
类具有两个重载的parse()
方法,用于将字符串中的时间转换为本地时间实例。
parse(CharSequence text) //1
parse(CharSequence text, DateTimeFormatter formatter) //2
- 如果字符串包含
ISO_LOCAL_DATE_TIME
模式中的时间,即2019-03-27T10:15:30
,请使用第一种方法。 这是 Java 中本地时间的默认模式。 - 对于其他任何日期时间模式,我们都需要使用第二种方法,在该方法中,我们将时间作为字符串传递,并且使用格式化器来表示该日期时间字符串的模式。
//1 - default time pattern
String time = "2019-03-27T10:15:30";
LocalDateTime localTimeObj = LocalDateTime.parse(time);
//2 - specific date time pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");
String time1 = "2019-03-27 10:15:30 AM";
LocalDateTime localTimeObj1 = LocalDateTime.parse(time1, formatter);
4. 如何将LocalDateTime
格式化为字符串
使用LocalDateTime.format(DateTimeFormatter)
方法将本地时间格式化为所需的字符串表示形式。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss a");
LocalDateTime now = LocalDateTime.now();
String dateTimeString = now.format(formatter); //2019-03-28 14:47:33 PM
5. 如何修改本地时间
LocalDateTime
提供以下方法,可用于相对于可用的localdatetime
实例获取新的localdatetime
实例。
plusYears()
plusMonths()
plusDays()
plusHours()
plusMinutes()
plusSeconds()
plusNanos()
minusYears()
minusMonths()
minusDays()
minusHours()
minusMinutes()
minusSeconds()
minusNanos()
LocalDateTime now = LocalDateTime.now();
//3 hours later
LocalDateTime localDateTime1 = now.plusHours(3);
//3 minutes earliar
LocalDateTime localDateTime2 = now.minusMinutes(3);
//Next year same time
LocalDateTime localDateTime2 = now.plusYears(1);
//Last year same time
LocalDateTime localDateTime2 = now.minusYears(1);
6. LocalDateTime
示例
在LocalDateTime
和ZonedDateTime
之间转换
在 Java 中将LocalDate
转换为LocalDateTime
在评论中向我发送有关 Java 8 LocalDateTime
类的问题。
学习愉快!