Java中用of方法构建日期时间对象需选对类:LocalDate(年月日,如LocalDate.of(2025,4,12))、LocalDateTime(年月日时分秒,支持多参数重载)、LocalTime(时分秒),带时区则需先建LocalDateTime再组合ZoneId或ZoneOffset。

Java 中使用 of 方法构建日期时间对象,核心是选择合适的类(如 LocalDate、LocalDateTime、LocalTime 等),再调用其静态 of 工厂方法传入对应参数。
LocalDate:只指定年月日
适用于不需要时分秒的纯日期场景,比如生日、合同生效日。
语法:LocalDate.of(年, 月, 日),注意:月是 1~12 的整数(不是从 0 开始)。
LocalDate date = LocalDate.of(2025, 4, 12); // 2025年4月12日LocalDate.of(2025, Month.APRIL, 12); // 也可用 Month 枚举,更语义化- 若参数非法(如 2025年2月30日),会抛出
DateTimeException
LocalDateTime:指定年月日 + 时分秒
适用于完整时间点(无时区),比如系统日志时间戳、数据库中的 datetime 字段。
立即学习“Java免费学习笔记(深入)”;
有多个重载 of 方法:
-
LocalDateTime.of(年, 月, 日, 时, 分)→ 如LocalDateTime.of(2025, 4, 12, 14, 30)表示 2025-04-12T14:30 -
LocalDateTime.of(年, 月, 日, 时, 分, 秒)→ 支持秒,如LocalDateTime.of(2025, 4, 12, 14, 30, 45) -
LocalDateTime.of(年, 月, 日, 时, 分, 秒, 纳秒)→ 支持纳秒精度 - 也支持组合已有对象:
LocalDateTime.of(LocalDate.of(2025,4,12), LocalTime.of(14,30))
LocalTime:只指定时分秒(不含日期)
适合表示一天中的某个时刻,比如营业开始时间、闹钟设定。
LocalTime.of(14, 30) // 14:30LocalTime.of(14, 30, 45) // 14:30:45LocalTime.of(14, 30, 45, 123_000_000) // 14:30:45.123
带时区的时间(ZonedDateTime / OffsetDateTime)
如果需明确时区或偏移量,不能直接用 of 构造完整对象,而是分步组合:
- 先创建
LocalDateTime,再结合时区:ZonedDateTime zdt = LocalDateTime.of(2025, 4, 12, 14, 30).atZone(ZoneId.of("Asia/Shanghai")); - 或用偏移量:
OffsetDateTime odt = LocalDateTime.of(2025, 4, 12, 14, 30).atOffset(ZoneOffset.of("+08:00"));


















