目录
三、java.time.format.DateTimeFormatter
一、java.time.LocalDateTime
1.1 基本使用
public static void main(String[] args)
{
LocalDate d = LocalDate.now(); // 当前日期
LocalTime t = LocalTime.now(); // 当前时间
LocalDateTime dt = LocalDateTime.now(); // 当前日期和时间
System.out.println(d); // 严格按照ISO 8601格式打印
System.out.println(t); // 严格按照ISO 8601格式打印
System.out.println(dt); // 严格按照ISO 8601格式打印
System.out.println("-----------------------");
LocalDateTime pdt = LocalDateTime.parse("2019-11-19T15:16:17");
LocalDate pd = LocalDate.parse("2019-11-19");
LocalTime pt = LocalTime.parse("15:16:17");
System.out.println(pdt);
System.out.println(pd);
System.out.println(pt);
}
测试输出:
2019-10-29
11:54:32.796
2019-10-29T11:54:32.796
-----------------------
2019-11-19T15:16:17
2019-11-19
15:16:17
从上述的测试可以发现:
1.LocalDateTime
、LocalDate
和LocalTime
默认严格按照ISO 8601规定的日期和时间格式进行打印。
ISO 8601规定的日期和时间分隔符是
T
。标准格式如下:
- 日期:yyyy-MM-dd
- 时间:HH:mm:ss
- 带毫秒的时间:HH:mm:ss.SSS
- 日期和时间:yyyy-MM-dd'T'HH:mm:ss
- 带毫秒的日期和时间:yyyy-MM-dd'T'HH:mm:ss.SSS
2. 通过指定的日期和时间创建LocalDateTime
可以通过of()
方法,of()方法有许多重载方式。
// 指定日期和时间:
LocalDate d2 = LocalDate.of(2019, 11, 30); // 2019-11-30, 注意11=11月
LocalTime t2 = LocalTime.of(15, 16, 17); // 15:16:17
LocalDateTime dt2 = LocalDateTime.of(2019, 11, 30, 15, 16, 17);
LocalDateTime dt3 = LocalDateTime.of(d2, t2);
3. 可以直接将标准格式的字符串传入LocalDateTime,调用parse()方法就可以直接解析。
1.2 加减调整
LocalDateTime
提供了对日期和时间进行加减和指定调整的的非常简单的链式调用:
public static void main(String[] args)
{
LocalDateTime dt = LocalDateTime.of(2019, 10, 26, 20, 30, 59);
System.out.println("dt = " + dt);
// 加6天减3小时:
LocalDateTime dt2 = dt.plusDays(6).minusHours(3);
System.out.println("dt2 = " + dt2); // 2019-11-01T17:30:59
// 减1月:
LocalDateTime dt3 = dt.minusMonths(1);
System.out.println("dt3 = " + dt3); // 2019-09-26T20:30:59