LocalDateTime
是Java的日期和时间类之一,用于表示不带时区信息的日期时间。
- LocalDateTime 没有时区, 所以也就不能用来直接获取时间戳
- LocalDateTime 是一个基于值得类, 所以该类的示例不是通过构造函数的方式进行创建
以下是一些关于LocalDateTime
的常见操作和用法:
1. 创建LocalDateTime
对象:
获取当前的时间:
LocalDateTime now = LocalDateTime.now(); // 获取当前日期和时间
通过指定年月日时分秒来创建LocalDateTime 对象
LocalDateTime dateTime = LocalDateTime.of(2023, 8, 8, 23, 59, 59); // 指定日期和时间
LocalDateTime的日期对象遵循的是ISO-8601的日期标准,也就是时间的字符串的表示形式是 2023-08-08T10:15:30
LocalDateTime parsedDateTime = LocalDateTime.parse("2023-08-08T23:59:59"); // 解析字符串为LocalDateTime对象
2. 获取LocalDateTime的日期和时间成分:
int year = dateTime.getYear();
Month month = dateTime.getMonth();
int dayOfMonth = dateTime.getDayOfMonth();
int hour = dateTime.getHour();
int minute = dateTime.getMinute();
int second = dateTime.getSecond();
3. 修改日期和时间成分:
LocalDateTime modifiedDateTime = dateTime.withYear(2023); // 修改年份为2023
LocalDateTime addedDateTime = dateTime.plusDays(1); // 增加一天
LocalDateTime subtractedDateTime = dateTime.minusHours(2); // 减去两小时
4. 格式化为字符串:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter); // 格式化为字符串
5. 进行日期和时间计算:
LocalDateTime startDateTime = LocalDateTime.of(2022, 1, 1, 0, 0, 0);
LocalDateTime endDateTime = LocalDateTime.of(2022, 12, 31, 23, 59, 59);
Duration duration = Duration.between(startDateTime, endDateTime); // 计算时间间隔
long minutes = duration.toMinutes(); // 获取分钟数
LocalDateTime
类提供了许多方法来处理日期和时间,包括创建、访问和修改成分、格式化、计算时间间隔等。它是一个常用的类,适用于许多日期和时间操作。
需要注意的是,LocalDateTime
表示的是不考虑时区的日期和时间。如果需要考虑时区信息,可以使用ZonedDateTime
或OffsetDateTime
等具有时区信息的类。
6. LocalDateTime 转换为时区时间
LocalDateTime 和时区无关, 所以给定一个LocalDateTime的对象, 可以将其转换为指定时区的时间, 示例如下:
LocalDateTime localdateTime = LocalDateTime.of(2023, 8, 8, 23, 59, 59); // 指定日期和时间
ZonedDateTime utc8DateTime= ZonedDateTime.of(localdateTime, ZoneId.of("UTC+8"));
完整示例代码:
- https://github.com/osxm/java-ency/blob/master/src/main/java/com/osxm/je/topic/date/LocalDateTimeDemo.java