Java
Python前端运维数据库
Java
Java
  • 新特性
    • Record
    • Optional
  • 面向对象
    • 面向对象基础
    • 构造方法
    • 继承与多态
    • 接口
    • 修饰符
    • 代码块
    • 接口(Interface)
    • 枚举类
  • IO流
    • IO
      • 字节流
      • 字符流
      • 缓冲流
      • 转换流
      • 操作ZIP
      • File 对象
    • NIO
      • Channel和Buffer
      • 异步文件通道AsynchronousFileChannel
      • Selector
      • Path/Files/Pipe
  • 反射
  • 内存分配
  • 集合
    • 简介
    • List
    • Set
    • Map
    • EnumMap
  • 日期与时间
    • Date和Calendar
    • Java8 新时间 ✨
      • LocalDateTime
      • ZonedDateTime
      • Duration
    • 时间格式化
      • SimpleDateFromat
      • DateTimeFormatter ✨
    • Instant
    • 实践
  • 网络编程
    • IP 地址
    • 网络模型
    • TCP 编程
    • UDP 编程
    • HTTP 编程
  • 加密和安全
  • 并发编程
    • 多线程
    • 线程与进程的区别
    • 线程组和线程优先级
    • 线程池
    • 线程锁
  • 异步任务
    • Future
    • CompletableFuture
      • 开启异步任务
      • 串行任务方法
      • 并行任务方法
      • 任务结束方法
      • 异常处理方法
      • 查看状态方法
      • 设置任务结果方法
  • 执行系统命令
  • Stream 流
    • Stream 流的创建
    • Stream 流串行与并行
    • Stream 流中间操作
    • Stream 流终端操作
  • Lambda 表达式
    • Lambda 表达式简介
    • Lambda 表达式语法
    • 方法引用
  • String
  • StringBuffer
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 日期与时间
  2. Java8 新时间 ✨

LocalDateTime

上一页Java8 新时间 ✨下一页ZonedDateTime

最后更新于3个月前

这有帮助吗?

从 Java 8 开始,java.time包提供了新的日期和时间 API,主要涉及的类型有:

  • 本地日期和时间:LocalDate、LocalTime、LocalDateTime。

  • 带时区的日期和时间:ZoneDateTime;

  • 时刻:Instant;

  • 时区:ZoneId,ZoneOffset;

  • 时间间隔:Duration。

以及一套新的用于取代SimpleDateFormat的格式化类型DateTimeFormatter。

和旧的 API 相比,新 API 严格区分了时刻,本地日期、本地时间和带时区的日期时间,并且对日期和时间进行运算更加方便。

此外,新 API 修改了旧 API 不合理的常量设计:

  • Monoth的范围用1~12表示1月到12月

  • week的范围用1~7表示周一到周日。

LocalDate date = LocalDate.now();    // 2025-01-20
LocalTime time = LocalTime.now();    // 11:21:40.748774
LocalDateTime dateTime = LocalDateTime.now(); // 2025-01-20T11:21:40.748785

本地日期和时间通过now()获取到的总是以当前默认时区返回的。LocalDateTime、LocalDate和LocalTime默认严格按照规定的日期和时间格式进行打印。

LocalDateTime dateTime = LocalDateTime.now();   // 2025-01-20T11:22:35.205451
LocalDate date = dateTime.toLocalDate();        // 转换到当前日期 2025-01-20
LocalTime time = dateTime.toLocalTime();        // 转化到当前时间 11:22:35.205451

反过来,通过指定的日期和时间创建LocalDateTime可以通过of()方法:

LocalDate date = LocalDate.of(2019, 1, 1);  // 2019-01-01
LocalTime time = LocalTime.of(23, 59, 59);  // 23:59:59
LocalDateTime dateTime = LocalDateTime.of(2019, 1, 1, 23, 59, 59);  // 2019-01-01T23:59:59
LocalDateTime dt3 = LocalDateTime.of(date, time);  // 2019-01-01T23:59:59
LocalDateTime dateTime = LocalDateTime.parse("2015-05-10T06:30:00");  // 2015-05-10T06:30
LocalTime time = LocalTime.parse("06:30:00");      // 06:30
LocalDate date = LocalDate.parse("2015-05-10");    // 2015-05-10
  • 日期:yyyy-MM-dd

  • 时间:HH:mm:ss

  • 带毫秒的时间:HH:mm:ss.SSS

  • 日期和时间:yyyy-MM-dd'T'HH:mm:ss

  • 带毫秒的日期和时间:yyyy-MM-dd'T'HH:mm:ss.SSS

因为严格按照的格式,因此,将字符串转换为LocalDateTime就可以传入标准格式:

注意规定的日期和时间分隔符是T。标准格式如下:

ISO 8601
ISO 8601
ISO 8601