0%

Java8 Time API

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import java.time.*;
import java.time.temporal.TemporalAdjusters;
import java.util.Date;

public class TimeApiInJava8 {
public void dateToLocalDate() {
final Date date = new Date();
final Instant instant = date.toInstant();
System.out.println(instant);
final ZoneId defaultZoneId = ZoneId.systemDefault();
ZonedDateTime atZone = instant.atZone(defaultZoneId);
final LocalDate localDate = atZone.toLocalDate();
System.out.println(localDate);
LocalDateTime localDateTime = atZone.toLocalDateTime();
System.out.println(localDateTime);
}

public void dateToLocalDateTime() {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId systemDefault = ZoneId.systemDefault();
LocalDateTime.ofInstant(instant, systemDefault);
}

public LocalDateTime longToLocalDateTime(Long time) {
ZoneId systemDefault = ZoneId.systemDefault();
Instant instant = Instant.ofEpochMilli(time);
LocalDateTime localDateTime = instant.atZone(systemDefault).toLocalDateTime();
return localDateTime;
}

public void localDateNow() {
LocalDate now = LocalDate.now();
System.out.println("localDateNow: " + now);
System.out.println("year: " + now.getYear());
System.out.println("month: " + now.getMonthValue());
System.out.println("day: " + now.getDayOfMonth());
}

public void localDateDiff() {
LocalDate nowLocalDate = LocalDate.of(2019, 12, 15);
LocalDate birthLocalDate = LocalDate.of(1986, 2, 14);
long l = nowLocalDate.toEpochDay() - birthLocalDate.toEpochDay();
System.out.println("date diff: " + l);
}

public void firstLastDay() {
LocalDate now = LocalDate.now();
LocalDate firstDayOfMonth = now.with(TemporalAdjusters.firstDayOfMonth());
LocalDate lastDayOfMonth = now.with(TemporalAdjusters.lastDayOfMonth());
LocalDate firstDayOfNextYear = now.with(TemporalAdjusters.firstDayOfNextYear());
LocalDate lastDayOfYear = now.with(TemporalAdjusters.lastDayOfYear());
LocalDate firstDayOfYear = now.with(TemporalAdjusters.firstDayOfYear());
System.out.println("firstDayOfMonth: " + firstDayOfMonth);
System.out.println("lastDayOfMonth: " + lastDayOfMonth);
System.out.println("firstDayOfNextYear: " + firstDayOfNextYear);
System.out.println("lastDayOfYear: " + lastDayOfYear);
System.out.println("firstDayOfYear: " + firstDayOfYear);
}

public void getDayOfMonth() {
LocalDate localDate = LocalDate.of(2019, 2, 14);
LocalDate lastDay = localDate.with(TemporalAdjusters.lastDayOfMonth());
int dayOfMonth = lastDay.getDayOfMonth();
System.out.println("day of month: " + dayOfMonth);
}

public void localDateCompareTo() {
LocalDate date1 = LocalDate.of(2018, 9, 20);
LocalDate date2 = LocalDate.of(2018, 9, 21);
System.out.println(date1 + ".compareTo(" + date2 + "): " + date1.compareTo(date2));
System.out.println(date1 + ".compareTo(" + date1 + "): " + date1.compareTo(date1));
System.out.println(date2 + ".compareTo(" + date1 + "): " + date2.compareTo(date1));

}

public void nextMonth() {

LocalDate localDate = LocalDate.of(2018, 2, 12);

// 下一周的该星期
LocalDate nextWeeks1 = localDate.minusWeeks(-1);
System.out.println(nextWeeks1);
// 2018-02-19
LocalDate nextWeeks2 = localDate.plusWeeks(1);
System.out.println(nextWeeks2);

// 获取下个月的这天
LocalDate nextMonth1 = localDate.minusMonths(-1);
System.out.println(nextMonth1);
// 2018-03-12
LocalDate nextMonth2 = localDate.plusMonths(1);
System.out.println(nextMonth2);

// 下个月的1号
LocalDate localDate3 = LocalDate.of(localDate.getYear(), localDate.getMonthValue() + 1, 1);
System.out.println(localDate3);
// 2018-03-01
}

public void localDatePeriod() {
LocalDate date1 = LocalDate.of(2018, 10, 9);
LocalDate date2 = LocalDate.of(2019, 4, 1);
Period period = Period.between(date1, date2);
int years = period.getYears();
int months = period.getMonths();
int days = period.getDays();
System.out.println("years:" + years + ", months:" + months + ", days:" + days);
// years:0, months:5, days:23
}

public void ofEpochSecond() {
Instant now = Instant.now();
System.out.println(now);
// 2019-03-13T06:41:32.865Z

// 去除毫秒
long l = now.toEpochMilli() / 1000;
// 通过秒构建Instant对象
Instant instant = Instant.ofEpochSecond(l);
System.out.println(instant);
// 2019-03-13T06:41:32Z
}

public void stringToLocalDate() {
final String string = "2018-12-07";
LocalDate parse = LocalDate.parse(string);
System.out.println(parse.toString());
// 结果是2018-12-07

}

public void localDateTimeToZonedDateTime() {
final String string = "2018-12-07T09:33:38";
LocalDateTime parse = LocalDateTime.parse(string);
ZonedDateTime z1 = ZonedDateTime.of(parse, ZoneId.of("Asia/Shanghai"));
System.out.println(z1.toString());
// 2018-12-07T09:33:38+08:00[Asia/Shanghai]

ZonedDateTime z2 = ZonedDateTime.of(parse, ZoneId.of("Z"));
System.out.println(z2.toString());
// 2018-12-07T09:33:38Z

ZonedDateTime z3 = ZonedDateTime.of(parse, ZoneId.of("UTC"));
System.out.println(z3.toString());
// 2018-12-07T09:33:38Z[UTC]

ZonedDateTime z4 = ZonedDateTime.of(parse, ZoneId.of("UTC+08:00"));
System.out.println(z4.toString());
// 2018-12-07T09:33:38+08:00[UTC+08:00]

ZonedDateTime z5 = ZonedDateTime.of(parse, ZoneId.of("+08:00"));
System.out.println(z5.toString());
// 2018-12-07T09:33:38+08:00

ZonedDateTime z6 = ZonedDateTime.of(parse, ZoneId.of("+00:00"));
System.out.println(z6.toString());
// 2018-12-07T09:33:38Z

}

public static void main(final String[] args) {
TimeApiInJava8 timeApi = new TimeApiInJava8();
timeApi.dateToLocalDate();
timeApi.dateToLocalDateTime();
System.out.println("long to localDateTime: " + timeApi.longToLocalDateTime(System.currentTimeMillis()));
timeApi.localDateNow();
timeApi.localDateDiff();
timeApi.firstLastDay();
timeApi.getDayOfMonth();
timeApi.localDateCompareTo();
timeApi.nextMonth();
timeApi.localDatePeriod();
timeApi.ofEpochSecond();
timeApi.stringToLocalDate();
timeApi.localDateTimeToZonedDateTime();
}
}