以前写项目的时候总是在使用到了时间的转换的时候才在工具类中添加一个方法,这样很容易导致代码冗余以及转换的方法注释不清晰导致每次使用都要重新看一遍工具类。因此整理出经常使用的一些转换,用作记录,以便以后使用。
此工具类主要用于获取时间戳以及各种时间类型之间的转换。
1 package com.test;
2
3 import java.text.ParseException;
4 import java.text.SimpleDateFormat;
5 import java.util.Calendar;
6 import java.util.Date;
7
8 import org.apache.commons.logging.Log;
9 import org.apache.commons.logging.LogFactory;
10
11
12 public class DateUtil {
13
14 private static final Log _log = LogFactory.getLog(DateUtil.class);
15
16
17 public static void main(String[] args) {
18
19 //System.out.println(getTimeStamp());
20
21 //System.out.println(getDate(24,60,60,000));
22
23 System.out.println(getTimeFormat("2016-05-23", "yyyy-MM-dd", "yyyyMMdd"));
24
25 }
26
27
28
29
30 /**
31 * 获取自定义格式的时间字符串
32 *
33 * @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
34 * @author panjianghong 2016-8-29
35 * */
36 public static String getTimeFormat(String format){
37
38 Date date = new Date();
39 SimpleDateFormat sdf = new SimpleDateFormat(format);
40 String time = sdf.format(date);
41
42 return time;
43 }
44
45
46 /**
47 * 获取自定义格式的时间字符串
48 *
49 * @param String format 例:"yyyy-MM-dd hh:mm:ss:SSS EEE"
50 * @param Date date
51 * @author panjianghong 2016-8-29
52 * */
53 public static String getTimeFormat(String format,Date date){
54
55 SimpleDateFormat sdf = new SimpleDateFormat(format);
56 String time = sdf.format(date);
57
58 return time;
59 }
60
61 /**
62 * 不同字符串时间格式间的转化
63 *
64 * @param String String time 例:"20140807"
65 * @param String format 例:"yyyyMMdd"
66 * @param String newFormat 例:"yyyy-MM-dd"
67 * @author panjianghong 2016-8-29
68 * */
69 public static String getTimeFormat(String time, String format, String newFormat){
70
71 long timestamp = getTimeStamp(time, format);
72
73 SimpleDateFormat sdf = new SimpleDateFormat(newFormat);
74
75 String timeFormat = sdf.format(getDate(timestamp));
76
77 return timeFormat;
78 }
79
80 /**
81 * 根据字符串类型的时间戳获取自定义格式的时间字符串
82 *
83 * @param String format
84 * @param String timestamp
85 * @author panjianghong 2016-8-29
86 * */
87 public static String getTimeFormat(String format,String timestamp){
88
89 Date date = getDate(timestamp);
90 SimpleDateFormat sdf = new SimpleDateFormat(format);
91 String time = sdf.format(date);
92
93 return time;
94 }
95
96
97 /**
98 * 根据长整型类型的时间戳获取自定义格式的时间字符串
99 *
100 * @param String format
101 * @param long timestamp
102 * @author panjianghong 2016-8-29
103 * */
104 public static String getTimeFormat(String format,long timestamp){
105
106 Date date = getDate(timestamp);
107 SimpleDateFormat sdf = new SimpleDateFormat(format);
108 String time = sdf.format(date);
109
110 return time;
111 }
112
113 /**
114 * 获取当前时间的时间戳
115 * @author panjianghong 2016-8-29
116 * */
117 public static long getTimeStamp(){
118
119 Date date = new Date();
120 long timestamp = date.getTime();
121
122 return timestamp;
123 }
124
125 /**
126 * 获取传递时间参数的时间戳
127 * @param Date date
128 * @author panjianghong 2016-8-29
129 * */
130 public static long getTimeStamp(Date date){
131
132 long timestamp = date.getTime();
133
134 return timestamp;
135 }
136
137 /**
138 * 根据时间字符串和时间格式获取时间戳
139 * @param String String time 例:"20140807"
140 * @param String format 例:"yyyyMMdd"
141 * @author panjianghong 2016-8-29
142 * */
143 public static long getTimeStamp(String time, String format){
144
145 Date date = getDate(time, format);
146
147 long timestamp = date.getTime();
148
149 return timestamp;
150 }
151
152
153 /**
154 * 根据字符串形式的时间戳获取当前时间
155 * @param String time
156 * @return Date date
157 * @author panjianghong 2016-8-29
158 * */
159 public static Date getDate(String timestamp){
160
161 Date date;
162 try {
163 date = new Date(Long.parseLong(timestamp));
164 return date;
165 } catch (NumberFormatException e) {
166 _log.error("字符串时间戳转换长整型数据失败!");
167 }
168
169 return null;
170 }
171
172 /**
173 * 根据长整型形式的时间戳获取当前时间
174 * @param String time
175 * @return Date date
176 * @author panjianghong 2016-8-29
177 * */
178 public static Date getDate(long timestamp){
179 Date date = new Date(timestamp);
180 return date;
181 }
182
183 /**
184 * 根据时间字符串和时间格式获取时间
185 * @param String time 例:"20140807"
186 * @param String format 例:"yyyyMMdd"
187 * @return Date date
188 * @author panjianghong 2016-8-29
189 * */
190 public static Date getDate(String time, String format){
191
192 SimpleDateFormat sdf = new SimpleDateFormat(format);
193 try {
194 Date date = sdf.parse(time);
195 return date;
196 } catch (ParseException e) {
197 _log.error("字符串转换时间失败!");
198 }
199
200 return null;
201 }
202
203
204 /**
205 * 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
206 * 大于1天的格式 yyyy-MM-dd HH:mm:ss
207 * @param Date date
208 * @return String
209 * @author panjianghong 2016-8-29
210 */
211 public static String getTimeText(Date date)
212 {
213 long subTime=((new Date().getTime())-date.getTime())/1000;
214 long sub=0;
215 sub=subTime/(24*60*60);
216 if(sub>0) //大于1天
217 {
218 return getTimeFormat("yyyy-MM-dd HH:mm:ss",date);
219 }
220 sub=subTime%(24*60*60)/(60*60);
221 if(sub>0)
222 {
223 return sub+"小时前";
224 }
225 sub=subTime%(24*60*60)%(60*60)/60;
226 if(sub>0)
227 {
228 return sub+"分钟前";
229 }
230 sub=subTime%(24*60*60)%(60*60)%60;
231 return sub+"秒前";
232 }
233
234 /**
235 * 获得文字类型的时间 比如:12小时前 33分钟前 10秒前
236 * 自定义大于1天的格式
237 * @param Date date
238 * @param String format
239 * @return String
240 * @author panjianghong 2016-8-29
241 */
242 public static String getTimeText(Date date, String format)
243 {
244 long subTime=((new Date().getTime())-date.getTime())/1000;
245 if(subTime < 0){
246 _log.error("输入的日期超过当前时间!");
247 return null;
248 }
249 long sub=0;
250 sub=subTime/(24*60*60);
251 if(sub>0) //大于1天
252 {
253 return getTimeFormat(format,date);
254 }
255 sub=subTime%(24*60*60)/(60*60);
256 if(sub>0)
257 {
258 return sub+"小时前";
259 }
260 sub=subTime%(24*60*60)%(60*60)/60;
261 if(sub>0)
262 {
263 return sub+"分钟前";
264 }
265 sub=subTime%(24*60*60)%(60*60)%60;
266 return sub+"秒前";
267 }
268 }