0Pricing
Java Academy · 课时

LocalDate、LocalTime、LocalDateTime

表示日期和时间

LocalDate、LocalTime、LocalDateTime 是 CoddyKit 上的免费 Java Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。

现代日期接口

从 Java 8 开始,java.time 包取代了旧式且容易出错的 Date 和 Calendar 类。它的核心类型是 LocalDate、LocalTime 和 LocalDateTime。

它们都是不可变且线程安全的。

LocalDate

LocalDate 表示不包含时间部分的日期:年、月和日。LocalDate.now() 会提供今天的日期,但测试应使用固定日期,以获得可预测的输出。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        System.out.println(date);
    }
}

读取日期组成部分

您可以使用 getYear、getMonthValue、getDayOfMonth 以及实用的 getDayOfWeek 提取各个组成部分。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2026, 5, 30);
        System.out.println(date.getYear());
        System.out.println(date.getMonthValue());
        System.out.println(date.getDayOfWeek());
    }
}

LocalTime

LocalTime 表示不包含日期的某个时刻:小时、分钟、秒和纳秒。

import java.time.LocalTime;

public class Main {
    public static void main(String[] args) {
        LocalTime time = LocalTime.of(14, 30, 15);
        System.out.println(time);
        System.out.println(time.getHour());
    }
}

LocalDateTime

LocalDateTime 将日期和时间组合成一个值,但它仍然不包含时区信息。

import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
        System.out.println(dt);
    }
}

组合日期与时间

您可以使用 atTime 将 LocalDate 与 LocalTime 合并,生成一个 LocalDateTime。

import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;

public class Main {
    public static void main(String[] args) {
        LocalDate d = LocalDate.of(2026, 5, 30);
        LocalTime t = LocalTime.of(8, 0);
        LocalDateTime dt = d.atTime(t);
        System.out.println(dt);
    }
}

不可变性与 with

这些类型都是不可变的。withYear 之类的方法会返回修改后的新副本,而不会改变原始值。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate original = LocalDate.of(2026, 5, 30);
        LocalDate changed = original.withYear(2030);
        System.out.println(original);
        System.out.println(changed);
    }
}

比较日期

请使用 isBefore、isAfter 和 isEqual,以清晰易读的方式比较时间顺序。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate a = LocalDate.of(2026, 1, 1);
        LocalDate b = LocalDate.of(2026, 12, 31);
        System.out.println(a.isBefore(b));
        System.out.println(a.isAfter(b));
    }
}

实用查询

便捷方法可以回答常见问题,例如 isLeapYear 和 lengthOfMonth。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.of(2024, 2, 1);
        System.out.println(date.isLeapYear());
        System.out.println(date.lengthOfMonth());
    }
}

从文本解析

每种类型都可以解析 ISO 格式的字符串。LocalDate.parse 可以读取类似 2026-05-30 的值。

import java.time.LocalDate;

public class Main {
    public static void main(String[] args) {
        LocalDate date = LocalDate.parse("2026-05-30");
        System.out.println(date.getMonth());
    }
}

选择合适的类型

生日和日历日期请使用 LocalDate,营业时间请使用 LocalTime,将日期与时间组合表示预约时请使用 LocalDateTime。这些类型都不包含时区信息。

快速检查

请检验您对核心日期和时间类型的掌握情况。

回顾

您已经学习了核心的 java.time 类型:

  • LocalDate 用于表示日期,LocalTime 用于表示时间,LocalDateTime 同时表示日期和时间
  • 它们都是不可变的;with 方法会返回新的副本
  • 使用 getYear、getDayOfWeek 等读取器方法读取各个部分
  • 使用 isBefore 和 isAfter 进行比较
  • 使用 parse 解析 ISO 字符串

常见问题解答

「LocalDate、LocalTime、LocalDateTime」课时是免费的吗?

是的 — 「LocalDate、LocalTime、LocalDateTime」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。

「LocalDate、LocalTime、LocalDateTime」这节课中我会学到什么?

表示日期和时间 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Java Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「LocalDate、LocalTime、LocalDateTime」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Java Academy 课中编写并运行代码吗?

能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. LocalDate、LocalTime、LocalDateTime
  2. Instant 与 Duration
  3. Period 与日期运算
  4. 使用 DateTimeFormatter 格式化
← 返回 Java Academy