JDK8中新日期时间API的复习

 1 package day2_15;
 2 
 3 import org.junit.Test;
 4 
 5 import java.time.Instant;
 6 import java.time.LocalDateTime;
 7 import java.time.OffsetDateTime;
 8 import java.time.ZoneOffset;
 9 import java.time.format.DateTimeFormatter;
10 import java.time.temporal.TemporalAccessor;
11 
12 /**
13  * @Author Tianhao
14  * @create 2021-02-14-20:53
15  */
16 public class DateTimeTest {
17 
18     @Test
19     public void testLocalDateTime() {
20         //LocalDateTime  类似于Calendar
21         //两种实例化方式
22         //方式一:now():当前日期时间
23         LocalDateTime now = LocalDateTime.now();
24         System.out.println(now);//2021-02-16T15:54:17.649
25         //方式二:of():指定日期时间
26         LocalDateTime past = LocalDateTime.of(2015, 6, 7, 11, 59, 59);
27         System.out.println(past);//2015-06-07T11:59:59
28         //获取相关属性
29         System.out.println(now.getDayOfMonth());//16
30         System.out.println(past.getMonthValue());//6
31 
32         System.out.println("**********");
33         //对LocalDateTime操作(体现不变性)
34         //设置相关属性,返回一个新的日期时间对象
35         LocalDateTime now2 = now.withDayOfMonth(10);
36         LocalDateTime past2 = past.withMonth(5);
37         System.out.println(now2);//2021-02-10T16:02:34.914
38         System.out.println(past2);//2015-05-07T11:59:59
39         System.out.println(now.getDayOfMonth());//16
40         System.out.println(past.getMonthValue());//6
41 
42         System.out.println("**********");
43         //增加相关属性值,返回一个新的日期时间对象
44         LocalDateTime now3 = now.plusDays(4);
45         LocalDateTime past3 = past.plusMonths(3);
46         System.out.println(now3);//2021-02-20T16:09:39.983
47         System.out.println(past3);//2015-09-07T11:59:59
48         System.out.println(now.getDayOfMonth());//16
49         System.out.println(past.getMonthValue());//6
50 
51         System.out.println("**********");
52         //减少相关属性值,返回一个新的日期时间对象
53         LocalDateTime now4 = now.minusDays(8);
54         LocalDateTime past4 = past.minusMonths(3);
55         System.out.println(now4);//2021-02-08T16:13:43.328
56         System.out.println(past4);//2015-03-07T11:59:59
57         System.out.println(now.getDayOfMonth());//16
58         System.out.println(past.getMonthValue());//6
59     }
60 
61     @Test
62     public void testInstant() {
63         //两种实例化方式
64         //方式一:本初子午线的标准时间
65         Instant now = Instant.now();
66         System.out.println(now);//2021-02-16T08:19:51.419Z
67         //中国处于东八区,所以小时需要加上8小时的偏移量
68         OffsetDateTime chinaNow = now.atOffset(ZoneOffset.ofHours(8));
69         System.out.println(chinaNow);//2021-02-16T16:19:51.419+08:00
70 
71         //方式二:指定与1970年1月1日0时0秒0分的毫秒数差值来创建对象
72         Instant now2 = Instant.ofEpochMilli(0);
73         Instant now3 = Instant.ofEpochMilli(3600000L);
74         System.out.println(now2);//1970-01-01T00:00:00Z
75         System.out.println(now3);//1970-01-01T01:00:00Z
76 
77         //对Instant操作
78         //获取当前时刻与1970年1月1日0时0秒0分的毫秒数差值
79         long milli = now.toEpochMilli();
80         System.out.println(milli);//1613464115414
81     }
82 
83     @Test
84     public void testDateTimeFormatter() {
85         //有三种方式创建对象,这里只测常用的一种
86         //自定义格式器
87         DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
88         //对DateTimeFormatter的操作
89         //格式化  LocalDateTime -->String
90         String str = formatter.format(LocalDateTime.now());
91         System.out.println(str);//2021-02-16 04:39:21
92         //解析  String--->LocalDateTime
93         TemporalAccessor localDateTime = formatter.parse("2021-02-16 04:39:21");
94         //{SecondOfMinute=21, NanoOfSecond=0, MicroOfSecond=0, MinuteOfHour=39, MilliOfSecond=0, HourOfAmPm=4},ISO resolved to 2021-02-16
95         System.out.println(localDateTime);
96     }
97 
98 }

 

posted @ 2021-02-16 16:44  dog_IT  阅读(77)  评论(0编辑  收藏  举报