本文内容基于 Oracle Java 官方文档,经过个人实践加以整理积累,仅供参考。
1 综述
JDK 8 引入新的日期时间 APIs,由主包 java.time
和 4 个子包组成:
- java.time
- java.time.chrono
- java.time.format
- java.time.temporal
- java.time.zone
方法命名规范
前缀 | 方法类型 | 用途 |
---|---|---|
of | static factory | Creates an instance where the factory is primarily validating the input parameters, not converting them |
from | static factory | Converts the input parameters to an instance of the target class, which may involve losing information from the input |
parse | static factory | Parses the input string to produce an instance of the target class. |
2 课程
Java 中有 2 种时间呈现方式:
(1) 人类世界的时间,如年、月、日、小时、分钟、秒
(2) 机器世界的时间,以一个时间轴为纪元,统计距离此纪元已消逝的纳秒(十亿分之一秒)值
JDK 8 新引入的日期时间 APIs 覆盖了这两种时间呈现方式,所以在选择具体 API 之前需要确定时间的呈现方式,可以参考下表
类或枚举 | 年 | 月 | 日 | 小时 | 分钟 | 秒 | 区域偏差 | 区域ID | 字符串输出 |
---|---|---|---|---|---|---|---|---|---|
Instant | Y | ||||||||
2.1 DayOfWeek
(1) java.time.DayOfWeek 是枚举类型,由 7 个常量组成,代表了一周七天
// 示例代码
package test;
import java.time.DayOfWeek;
import org.junit.Test;
public class DateTimeTest {
@Test
public void test() {
System.out.println("DayOfWeek.MONDAY : " + DayOfWeek.MONDAY);
System.out.println("DayOfWeek.TUESDAY : " + DayOfWeek.TUESDAY);
System.out.println("DayOfWeek.WEDNESDAY : " + DayOfWeek.WEDNESDAY);
System.out.println("DayOfWeek.THURSDAY : " + DayOfWeek.THURSDAY);
System.out.println("DayOfWeek.FRIDAY : " + DayOfWeek.FRIDAY);
System.out.println("DayOfWeek.SATURDAY : " + DayOfWeek.SATURDAY);
System.out.println("DayOfWeek.SUNDAY : " + DayOfWeek.SUNDAY);
}
}
// 测试结果
DayOfWeek.MONDAY : MONDAY
DayOfWeek.TUESDAY : TUESDAY
DayOfWeek.WEDNESDAY : WEDNESDAY
DayOfWeek.THURSDAY : THURSDAY
DayOfWeek.FRIDAY : FRIDAY
DayOfWeek.SATURDAY : SATURDAY
DayOfWeek.SUNDAY : SUNDAY
(2) 整型值范围[1,7],可以通过加减数字推算
(3) 使用 getDisplayName(TextStyle, Locale)
方法定制字符串内容
// 示例代码