DateUtils.java
4.5 KB
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
package com.diligrp.cashier.shared.util;
import com.diligrp.cashier.shared.Constants;
import java.text.SimpleDateFormat;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.Date;
/**
* 日期格式转化工具类 - JDK1.8 TIME API
*/
public class DateUtils {
public static final String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
public static final String YYYYMMDD = "yyyyMMdd";
public static String formatDateTime(LocalDateTime when, String format) {
if (ObjectUtils.isNull(when)) {
return null;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return when.format(formatter);
}
public static String formatDateTime(LocalDateTime when) {
return formatDateTime(when, Constants.DATE_TIME_FORMAT);
}
public static String formatDate(LocalDate when, String format) {
if (ObjectUtils.isNull(when)) {
return null;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return when.format(formatter);
}
public static String formatDate(LocalDate when) {
return formatDate(when, Constants.DATE_FORMAT);
}
public static String formatNow(String format) {
return formatDateTime(LocalDateTime.now(), format);
}
public static String formatNow() {
return formatNow(Constants.DATE_TIME_FORMAT);
}
public static String format(Date date) {
return format(date, Constants.DATE_TIME_FORMAT);
}
public static LocalDateTime addDays(long amount) {
LocalDateTime localDateTime = LocalDateTime.now();
return localDateTime.plusDays(amount);
}
public static String format(Date date, String format) {
if (ObjectUtils.isNull(date)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
public static LocalDateTime parseDateTime(String datetimeStr, String format) {
if (ObjectUtils.isEmpty(datetimeStr)) {
return null;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return LocalDateTime.parse(datetimeStr, formatter);
}
public static LocalDateTime parseDateTime(String datetimeStr) {
return parseDateTime(datetimeStr, Constants.DATE_TIME_FORMAT);
}
public static LocalDate parseDate(String dateStr, String format) {
if (ObjectUtils.isEmpty(dateStr)) {
return null;
}
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return LocalDate.parse(dateStr, formatter);
}
public static LocalDate parseDate(String dateStr) {
return parseDate(dateStr, Constants.DATE_FORMAT);
}
public static Date parse(String dateStr) {
return parse(dateStr, Constants.DATE_TIME_FORMAT);
}
public static Date parse(String dateStr, String format) {
if (ObjectUtils.isEmpty(dateStr)) {
return null;
}
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.parse(dateStr);
} catch (Exception ex) {
throw new IllegalArgumentException("Invalid date format", ex);
}
}
/**
* 获取时间戳
*/
public static long parseMilliSecond(LocalDateTime localDateTime) {
return parseMilliSecond(localDateTime, null);
}
public static long parseMilliSecond(LocalDateTime localDateTime, String zoneNumStr) {
//默认东八区
if (ObjectUtils.isEmpty(zoneNumStr)) {
zoneNumStr = "+8";
}
return localDateTime.toInstant(ZoneOffset.of(zoneNumStr)).toEpochMilli();
}
/**
* 时间戳-秒
*
*/
public static long timestampInSeconds() {
return Instant.now().getEpochSecond();
}
/**
* 两个时间点间隔的秒数
*
* 2026-01-07 10:00:00 - 2026-01-07 10:00:30, 返回 30
* 2026-01-07 10:00:30 - 2026-01-07 10:00:00, 返回 -30
*/
public static long secondsDiff(LocalDateTime startTime, LocalDateTime endTime) {
return ChronoUnit.SECONDS.between(startTime, endTime);
}
}