为什么要专门学这个看似简单的类库
在 Java 日常开发中,日期时间处理是最高频也最易踩坑的场景。很多开发者习惯直接使用 Date 和 Calendar,但这两者在实际工作中往往带来严重问题:Date 是可变对象,线程不安全;Calendar 的月份从 0 开始,时区处理繁琐且 API 设计陈旧,稍有不慎就会导致日志时间错误、计算溢出或并发 Bug。
这门课的核心价值,在于帮你彻底厘清从「老派 API」到「Java 8 新时间系统」的演变逻辑,并重点标注了那些隐藏在细节里的陷阱。它不是简单的 API 罗列,而是针对真实工作场景中常见的日期格式化、时长计算、跨时区处理等痛点,提供了一套标准且健壮的解决方案。
课程节奏与学习建议
课程结构清晰,分为三个阶段。第一阶段回顾 Date 与 Calendar,讲师特意安排了「此处有大坑」章节,旨在通过反面案例让你理解旧 API 为何不推荐使用,建议快速过完,重点记录其中的陷阱场景。
第二阶段是核心,深入讲解 Java 8 引入的 LocalDate、LocalTime 和 LocalDateTime。这部分内容非常务实,涵盖了对象的创建、时间分量的获取与修改、日期比较以及特殊日期判断。建议边看边在 IDE 中亲手实践每个方法,尤其是修改分量时不可变对象的使用方式,这是新手最容易混淆的点。
第三阶段进阶讲解 Period 和 Duration 的区别与使用,以及 ZoneId 时区处理。这两个类分别用于日期间隔和精确时间点间隔的计算,结合后续的两个「大坑」章节,能有效避免在结算系统或日志统计中出现的时间换算错误。对于有基础的读者,重点攻克 Duration 的多种计算方式及时区转换即可。
学完能独立解决什么问题
完成本课后,你将能够熟练在业务代码中弃用旧的日期 API,转而使用 Java 8 新的时间类库。具体而言,你可以独立完成以下任务:准确获取当前时间的各个分量(年、月、日、时、分、秒);对日期进行安全的加减运算及格式转换;精确计算两个时间点之间的天数或毫秒数差值;处理不同时区下的时间转换问题,并规避线程安全问题。
资料配合练习方面,建议将视频中的「大坑」案例作为单元测试的输入用例,自行编写代码复现错误并验证修复方案。这种基于错误场景的学习方式,比单纯记忆 API 更能提升代码的健壮性,真正达到企业级开发的要求。
课程目录
课程目录59 集
- 1 课程介绍 (12:22).mp4
- 2 Date类的使用(一) (15:45).mp4
- 3 Date类的使用(二) (11:37).mp4
- 4 Date类的使用(三) (26:00).mp4
- 5 此处有大坑(一) (08:38).mp4
- 6 Calendar类的使用(一) (17:05).mp4
- 7 Calendar类的使用(二) (15:47).mp4
- 8 Calendar类的使用(三) (12:04).mp4
- 9 此处有大坑(二) (19:31).mp4
- 10 Java8新日期时间系统简介 (10:26).mp4
- 11 创建LocalDate类对象 (11:16).mp4
- 12 获取LocalDate时间分量(一) (20:03).mp4
- 13 获取LocalDate时间分量(二) (16:35).mp4
- 14 修改LocalDate时间分量(一) (19:18).mp4
- 15 修改LocalDate时间分量(二) (15:27).mp4
- 16 日期的比较 (14:56).mp4
- 17 计算日期差 (18:26).mp4
- 18 判断特殊日期 (16:11).mp4
- 19 创建LocalTime对象 (13:24).mp4
- 20 LocalTime方法详解 (一) (18:40).mp4
- 21 LocalTime方法详解 (二) (08:35).mp4
- 22 LocalDateTime的使用 (17:28).mp4
- 23 创建Period对象 (14:53).mp4
- 24 Period类方法详解(一) (07:30).mp4
- 25 Period类方法详解(二) (18:14).mp4
- 26 此处有大坑(三) (08:18).mp4
- 27 创建Duration对象 (20:53).mp4
- 28 Duration类方法详解(一) (16:45).mp4
- 29 此处有大坑(四) (11:20).mp4
- 30 Duration类方法详解(二) (15:32).mp4
- 31 Duration类方法详解(三) (12:46).mp4
- 32 此处有大坑(五) (16:55).mp4
- 33 ZoneId与ZoneOffset(一) (25:33).mp4
- 34 ZoneId与ZoneOffset(二) (17:48).mp4
- 35 ZoneId与ZoneOffset(三) (17:31).mp4
- 36 创建ZonedDateTime对象 (一) (18:13).mp4
- 37 创建ZonedDateTime对象 (二) (24:15).mp4
- 38 创建OffsetDateTime对象 (06:48).mp4
- 39 ZonedDateTime与OffsetDateTime一 (20:01).mp4
- 40 query()方法详解 (17:56).mp4
- 41 ZonedDateTime与OffsetDateTime二 (15:15).mp4
- 42 ZonedDateTime与OffsetDateTime三 (16:46).mp4
- 43 ZonedDateTime与OffsetDateTime四 (19:03).mp4
- 44 格式化日期时间对象 (14:56).mp4
- 45 Clock类详解 (21:16).mp4
- 46 Instant类详解(一) (22:20).mp4
- 47 Instant类详解(二) (20:38).mp4
- 48 now()方法详解 (12:40).mp4
- 49 对象从哪来(一) (13:58).mp4
- 50 对象从哪来(二) (24:14).mp4
- 51 对象从哪来(三) (22:07).mp4
- 52 万年历项目(一) (22:49).mp4
- 53 万年历项目(二) (28:29).mp4
- 54 万年历项目(三) (23:35).mp4
- 55 万年历项目(四) (22:44).mp4
- 56 万年历项目(五) (27:40).mp4
- 57 万年历项目(六) (28:50).mp4
- 58 万年历项目(七) (18:51).mp4
- 59 万年历项目(八) (24:29).mp4






