ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# Java `LocalDateTime`类 > 原文: [https://howtodoinjava.com/java/date-time/java-localdatetime-class/](https://howtodoinjava.com/java/date-time/java-localdatetime-class/) [Java 8 中引入](https://howtodoinjava.com/java8/date-and-time-api-changes-in-java-8-lambda/)的`java.time.LocalDateTime`类,表示没有时区信息的本地日期时间对象。 它表示达到纳秒精度的时间,例如 `2007-12-03T10:15:30:55.123456789`。 我们可以使用`LocalDateTime`实例来表示时间,而无需任何时区引用。 例如,我们可以使用`LocalDateTime`在任何应用程序中触发批处理作业。 作业将在服务器所在的时区中的特定时间执行。 实际上,为了使其更有用,我们应该将`LocalDateTime`与其他信息(例如偏移或时区)一起使用。 注意,`LocalDateTime`实例是[**不可变的**](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/)和[**线程安全**](https://howtodoinjava.com/java/multi-threading/what-is-thread-safety/)。 ## 1\. `LocalDateTime`类声明 ```java public final class LocalDateTime extends Object implements Temporal, TemporalAdjuster, ChronoLocalDateTime<LocalDate>, Serializable { //class body } ``` ## 2\. 如何创建`LocalDateTime` 通常,我们将在两种情况下创建`LocalDateTime`实例,即获取当前时间或为指定时间戳创建本地日期时间。 #### 2.1 获取当前时间 使用以下工厂方法获取当前本地日期时间。 ```java LocalDateTime now = LocalDateTime.now(); ``` #### 2.2 创建指定时间 要创建具有特定日期和时间信息的本地时间,请使用以下方法。 ```java //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()`方法,用于将字符串中的时间转换为本地时间实例。 ```java parse(CharSequence text) //1 parse(CharSequence text, DateTimeFormatter formatter) //2 ``` * 如果字符串包含[`ISO_LOCAL_DATE_TIME`](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_DATE_TIME)模式中的时间,即`2019-03-27T10:15:30`,请使用第一种方法。 这是 Java 中本地时间的默认模式。 * 对于其他任何日期时间模式,我们都需要使用第二种方法,在该方法中,我们将时间作为字符串传递,并且使用格式化器来表示该日期时间字符串的模式。 ```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)`方法将本地时间格式化为所需的字符串表示形式。 ```java 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()` ```java 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`实例](https://howtodoinjava.com/java/date-time/compare-localdatetime/) [在`LocalDateTime`和日期之间转换](https://howtodoinjava.com/java/date-time/localdatetime-to-date/) [在`LocalDateTime`和`ZonedDateTime`之间转换](https://howtodoinjava.com/java/date-time/localdatetime-to-zoneddatetime/) [将`LocalDateTime`格式转换为字符串](https://howtodoinjava.com/java/date-time/format-localdatetime-to-string/) [将字符串解析为`LocalDateTime`](https://howtodoinjava.com/java/date-time/localdatetime-parse/) [在 Java 中将`LocalDate`转换为`LocalDateTime`](https://howtodoinjava.com/java/date-time/localdate-localdatetime-conversions/) 在评论中向我发送有关 Java 8 `LocalDateTime`类的问题。 学习愉快! 参考: [`LocalDateTime` Java 文档](https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html)