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 反馈 — 无需本地设置。
此课程中的所有课时
- LocalDate、LocalTime、LocalDateTime
- Instant 与 Duration
- Period 与日期运算
- 使用 DateTimeFormatter 格式化