-
Notifications
You must be signed in to change notification settings - Fork 9
/
TimeUtil.java
204 lines (161 loc) · 5.57 KB
/
TimeUtil.java
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
package com.example.demo.util;
import com.example.demo.mapper.BaseMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
//@Component
public class TimeUtil {
//加载顺序:Constructor >> @Autowired >> @PostConstruct
// @Autowired
// private BaseMapper baseMapper;
//
// private static TimeUtil timeUtil;
//
// @PostConstruct
// public void init() {
// timeUtil = this;
// timeUtil.baseMapper = this.baseMapper;
// }
public static String timeStamp2DateString(Timestamp timeStamp) {
SimpleDateFormat fm = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return fm.format(timeStamp);
}
/**
* 将long类型的时间戳转换成yyyy-MM-dd HH:mm:ss格式的字符串
* @param timeStamp long类型
* @return yyyy-MM-dd HH:mm:ss格式的字符串
*/
public static String timeStamp2DateString(long timeStamp) {
String str = timeStamp2DateString(timeStamp, "yyyy-MM-dd HH:mm:ss");
return str;
}
/**
* 将long类型的时间戳转换成pattern格式的字符串
* @param timeStamp long 类型的时间戳
* @param pattern 代表转换的格式的字符串
* @return pattern格式的字符串
*/
public static String timeStamp2DateString(long timeStamp, String pattern) {
if (timeStamp > 0) {
SimpleDateFormat fm = new SimpleDateFormat(pattern);
return fm.format(timeStamp);
} else {
System.out.println("时间格式有误。。。");
return "";
}
}
/**
* 以某种格式获得当前时间
* @param pattern 格式
* @return
*/
public static String getCurrentDateString(String pattern) {
long stamp = System.currentTimeMillis();
return timeStamp2DateString(stamp, pattern);
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getCurrentDateString() {
//timeUtil.baseMapper.count("SELECT count(*) FROM user");
return getCurrentDateString("yyyy-MM-dd HH:mm:ss");
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getCurrentDayString() {
//timeUtil.baseMapper.count("SELECT count(*) FROM user");
return getCurrentDateString("yyyy-MM-dd");
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getYesterdayString() {
long stamp = System.currentTimeMillis()-1000*60*60*24;
return timeStamp2DateString(stamp, "yyyy-MM-dd");
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getBefore24HoursString() {
long stamp = System.currentTimeMillis()-1000*60*60*24;
return timeStamp2DateString(stamp, "yyyy-MM-dd HH:mm:ss");
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getCurrentDateStringMillisecond() {
return getCurrentDateString("yyyy-MM-dd HH:mm:ss.SSS");
}
/**
* 按默认时间格式获得当前时间
* @return
*/
public static String getCurrentDateStringYearAndMonth() {
return getCurrentDateString("yyyy")+"/"+getCurrentDateString("MM");
}
/**
* (1)能匹配的年月日类型有:
* 2014 年4 月19 日
* 2014年4月19日
* 2014年4月19号
* 2014-4-19
* 2014/4/19
* 2014.4.19
* 19.4.2014
* 19-4-2014
* 19/4/2014
* (2)能匹配的时分秒类型有:
* 15:28:21
* 15:28
* 5:28 pm
* 15点28分21秒
* 15点28分
* 15点
* (3)能匹配的年月日时分秒类型有:
* (1)和(2)的任意组合,二者中间可有任意多个空格
*
* 注意: 如果dateStr中有多个时间串存在,只会匹配第一个串,其他的串忽略
*
* @param text
* @return (1)和(2)的任意组合格式的字符串
*/
public static String matchDateString(String dateStr) {
try {
List matches = null;
Pattern p = Pattern.compile("(\\d{1,4}(\\s)*[-|\\/|年|\\.](\\s)*\\d{1,2}(\\s)*[-|\\/|月|\\.](\\s)*\\d{1,4}(\\s)*([日|号])?(\\s)*(\\d{1,2}([点|时])?((:)?\\d{1,2}(分)?((:)?\\d{1,2}(秒)?)?)?)?(\\s)*(PM|AM)?)", Pattern.CASE_INSENSITIVE|Pattern.MULTILINE);
Matcher matcher = p.matcher(dateStr);
if (matcher.find() && matcher.groupCount() >= 1) {
matches = new ArrayList();
for (int i = 1; i <= matcher.groupCount(); i++) {
String temp = matcher.group(i);
matches.add(temp);
}
} else {
matches = Collections.EMPTY_LIST;
}
if (matches.size() > 0) {
dateStr = ((String) matches.get(0)).trim();
} else {
dateStr = "";
}
} catch (Exception e) {
return "";
}
return dateStr;
}
}