jdk1.8时间工具类整合

jdk1.8时间工具类整理

Posted by 肖圣豪 on 2018-11-20

jdk1.8时间工具类整理

1
Java1.8在java.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
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226

public class DateUtil {
private static final Logger log = LoggerFactory.getLogger(DateUtil.class);
public static final String DATETIME = "yyyy-MM-dd HH:mm:ss";
public static final String DATE = "yyyy-MM-dd";

/**
* 返回hh:MM:ss格式
* @duration 毫秒
*/
public static String formatDuration(Integer duration) {
if (duration == null) {
return "00:00:00";
}
return String.format("%02d", duration / 3600) + ":" + String.format("%02d", (duration % 3600) / 60) + ":" + String.format("%02d", (duration % 3600) % 60);
}

/**
* 返回hh:MM格式
* @duration 毫秒
*/
public static String formatDurationOfFourLength(Integer duration) {
if (duration == null) {
return "00:00";
}
return String.format("%02d", duration / 3600) + ":" + String.format("%02d", (duration % 3600) / 60);
}


public static Date getNow() {
return new Date();
}

public static Integer getYear() {
return LocalDate.now().getYear();
}

public static Integer getMonth() {
return LocalDate.now().getMonth().getValue();
}

public static Integer getDayOfWeek() {
return LocalDate.now().getDayOfWeek().getValue();
}

public static Integer getDayOfMonth() {
return LocalDate.now().getDayOfMonth();
}

public static Integer getYear(Date date) {
return dateToLocalDate(date).getYear();
}

public static Integer getMonth(Date date) {
return dateToLocalDate(date).getMonth().getValue();
}

public static Integer getDayOfWeek(Date date) {
return dateToLocalDate(date).getDayOfWeek().getValue();
}

public static Integer getDayOfMonth(Date date) {
return dateToLocalDate(date).getDayOfMonth();
}

public static String format(String pattern) {
return LocalDateTime.now().format(DateTimeFormatter.ofPattern(pattern));
}

public static String format(Date date, String pattern) {
if (date == null) {
return StringUtils.EMPTY;
}
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTime.format(DateTimeFormatter.ofPattern(pattern));
}

public static Date parseDateTime(String dateTime, String pattern) {
LocalDateTime localDateTime = LocalDateTime.parse(dateTime, DateTimeFormatter.ofPattern(pattern));
return localDateTimeToDate(localDateTime);
}

public static Date parseDate(String date, String pattern) {
LocalDate dateTime = LocalDate.parse(date, DateTimeFormatter.ofPattern(pattern));
return localDateToDate(dateTime);
}

public static Date plusYears(Date date, long years) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusYears(years));
}

public static Date plusMonths(Date date, long months) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusMonths(months));
}

public static Date plusDays(Date date, long days) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusDays(days));
}

public static Date plusHours(Date date, long hours) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusHours(hours));
}

public static Date plusWeeks(Date date, long weeks) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusWeeks(weeks));
}

public static Date plusMinutes(Date date, long minutes) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusMinutes(minutes));
}

public static Date plusSeconds(Date date, long seconds) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusSeconds(seconds));
}

public static Date plusNanos(Date date, long nanos) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.plusNanos(nanos));
}


public static Date minusYears(Date date, long years) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusYears(years));
}

public static Date minusMonths(Date date, long months) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusMonths(months));
}

public static Date minusDays(Date date, long days) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusDays(days));
}

public static Date minusHours(Date date, long hours) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusHours(hours));
}

public static Date minusWeeks(Date date, long weeks) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusWeeks(weeks));
}

public static Date minusMinutes(Date date, long minutes) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusMinutes(minutes));
}

public static Date minusSeconds(Date date, long seconds) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusSeconds(seconds));
}

public static Date minusNanos(Date date, long nanos) {
LocalDateTime localDateTime = dateToLocalDateTime(date);
return localDateTimeToDate(localDateTime.minusNanos(nanos));
}


public static Integer betweenToYears(Date var1, Date var2) {
LocalDate localDate1 = dateToLocalDate(var1);
LocalDate localDate2 = dateToLocalDate(var2);
Period period = Period.between(localDate1, localDate2);
return period.getYears();
}

public static Integer betweenToMonths(Date var1, Date var2) {
return betweenToYears(var1, var2) * 12;
}

public static Long betweenToDays(Date var1, Date var2) {
LocalDate localDate1 = dateToLocalDate(var1);
LocalDate localDate2 = dateToLocalDate(var2);
return localDate1.toEpochDay() - localDate2.toEpochDay();
}

public static Long betweenToHours(Date var1, Date var2) {
return betweenToDays(var1, var2) * 24;
}

public static Long betweenToMinutes(Date var1, Date var2) {
return betweenToHours(var1, var2) * 60;
}

public static Long betweenToSeconds(Date var1, Date var2) {
return betweenToMinutes(var1, var2) * 60;
}

public static Long betweenToMillis(Date var1, Date var2) {
return betweenToSeconds(var1, var2) * 1000;
}

private static LocalDate dateToLocalDate(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDate();
}

private static LocalDateTime dateToLocalDateTime(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDateTime();
}

private static Date localDateToDate(LocalDate localDate) {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zoneId).toInstant();
return Date.from(instant);
}

private static Date localDateTimeToDate(LocalDateTime localDateTime) {
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zoneId).toInstant();
return Date.from(instant);
}
}



支付宝打赏 微信打赏

赞赏一下