1 package com.example.alimjan.hello_world;
2
3 /**
4 * Created by alimjan on 6/30/2017.
5 */
6
7 import java.text.ParseException;
8 import java.text.SimpleDateFormat;
9 import java.util.Calendar;
10 import java.util.Date;
11
12
13 public class DateUtil {
14
15 private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
16
17 public static Date str2Date(String str) {
18 return str2Date(str, null);
19 }
20
21 public static Date str2Date(String str, String format) {
22 if (str == null || str.length() == 0) {
23 return null;
24 }
25 if (format == null || format.length() == 0) {
26 format = FORMAT;
27 }
28 Date date = null;
29 try {
30 SimpleDateFormat sdf = new SimpleDateFormat(format);
31 date = sdf.parse(str);
32
33 } catch (Exception e) {
34 e.printStackTrace();
35 }
36 return date;
37
38 }
39
40 public static Calendar str2Calendar(String str) {
41 return str2Calendar(str, null);
42
43 }
44
45 public static Calendar str2Calendar(String str, String format) {
46
47 Date date = str2Date(str, format);
48 if (date == null) {
49 return null;
50 }
51 Calendar c = Calendar.getInstance();
52 c.setTime(date);
53
54 return c;
55
56 }
57
58 public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss
59 return date2Str(c, null);
60 }
61
62 public static String date2Str(Calendar c, String format) {
63 if (c == null) {
64 return null;
65 }
66 return date2Str(c.getTime(), format);
67 }
68
69 public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss
70 return date2Str(d, null);
71 }
72
73 public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss
74 if (d == null) {
75 return null;
76 }
77 if (format == null || format.length() == 0) {
78 format = FORMAT;
79 }
80 SimpleDateFormat sdf = new SimpleDateFormat(format);
81 String s = sdf.format(d);
82 return s;
83 }
84
85 public static String getCurDateStr() {
86 Calendar c = Calendar.getInstance();
87 c.setTime(new Date());
88 return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
89 + c.get(Calendar.DAY_OF_MONTH) + "-"
90 + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE)
91 + ":" + c.get(Calendar.SECOND);
92 }
93
94 /**
95 * 获得当前日期的字符串格式
96 *
97 * @param format
98 * @return
99 */
100 public static String getCurDateStr(String format) {
101 Calendar c = Calendar.getInstance();
102 return date2Str(c, format);
103 }
104
105 // 格式到秒
106 public static String getMillon(long time) {
107
108 return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);
109
110 }
111
112 // 格式到天
113 public static String getDay(long time) {
114
115 return new SimpleDateFormat("yyyy-MM-dd").format(time);
116
117 }
118
119 // 格式到毫秒
120 public static String getSMillon(long time) {
121
122 return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);
123
124 }
125
126
127 /*
128 输入的是String,格式诸如20120102,实现加一天的功能,返回的格式为String,诸如20120103
129 */
130 public static String stringDatePlus(String row) throws ParseException{
131 String year=row.substring(0, 4);
132 String month=row.substring(4,6);
133 String day=row.substring(6);
134 String date1=year+"-"+month+"-"+day;
135 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
136 Date startDate=sdf.parse(date1);
137 Calendar cd = Calendar.getInstance();
138 cd.setTime(startDate);
139 cd.add(Calendar.DATE, 1);
140 String dateStr =sdf.format(cd.getTime());
141 String year1=dateStr.substring(0,4);
142 String month1=dateStr.substring(5,7);
143 String day1=dateStr.substring(8);
144 return year1+month1+day1;
145 }
146
147 /*
148 输入的是String,格式诸如20120102,实现减一天的功能,返回的格式为String,诸如20120101
149 */
150 public static String stringDateDecrease(String row) throws ParseException{
151 String year=row.substring(0, 4);
152 String month=row.substring(4,6);
153 String day=row.substring(6);
154 String date1=year+"-"+month+"-"+day;
155 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
156 Date startDate=sdf.parse(date1);
157 Calendar cd = Calendar.getInstance();
158 cd.setTime(startDate);
159 cd.add(Calendar.DATE, -1);
160 String dateStr =sdf.format(cd.getTime());
161 String year1=dateStr.substring(0,4);
162 String month1=dateStr.substring(5,7);
163 String day1=dateStr.substring(8);
164 return year1+month1+day1;
165 }
166
167 /*
168 输入的格式为String,诸如20120101,返回的格式为String,诸如2012-01-01
169 */
170 public static String stringDateChange(String date)
171 {
172 if(date.length()=="20120101".length()){
173 String year=date.substring(0, 4);
174 String month=date.substring(4,6);
175 String day=date.substring(6);
176 return year+"-"+month+"-"+day;
177 }else{
178 return date;
179 }
180
181
182 }
183 /**
184 * 日期向后推一天
185 * @param date 格式:20120101
186 * @return 20120102
187 */
188 public static String tonextday(String date){
189 int year = Integer.parseInt(date.substring(0,4));
190 int month = Integer.parseInt(date.substring(4,6));
191 int day = Integer.parseInt(date.substring(6));
192 Calendar calendar = Calendar.getInstance();
193 calendar.set(year, month-1, day+1);
194 Date newdate = calendar.getTime();
195 SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
196 String da = format.format(newdate);
197 return da;
198 }
199
200 /**
201 * 获取当前日期上一周的开始日期 (周日)
202 */
203 public static String previousWeekByDate(String date) {
204 int year = Integer.parseInt(date.substring(0,4));
205 int month = Integer.parseInt(date.substring(4,6));
206 int day = Integer.parseInt(date.substring(6));
207 Calendar calendar = Calendar.getInstance();
208 calendar.set(year, month-1, day);
209 Date newdate = calendar.getTime();
210 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
211 Calendar cal = Calendar.getInstance();
212 cal.setTime(newdate);
213 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
214 if(1 == dayWeek) {
215 cal.add(Calendar.DAY_OF_MONTH, -1);
216 }
217 cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
218 int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
219 cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值
220 cal.add(Calendar.WEEK_OF_YEAR, -1);
221 String imptimeBegin = sdf.format(cal.getTime());
222 // System.out.println("所在周星期日的日期:"+imptimeBegin);
223 return imptimeBegin;
224 }
225
226
227 /**
228 * 获取当前日期上一周的结束日期 (周六)
229 */
230 public static String previousWeekEndDayByDate(String date) {
231 int year = Integer.parseInt(date.substring(0,4));
232 int month = Integer.parseInt(date.substring(4,6));
233 int day = Integer.parseInt(date.substring(6));
234 Calendar calendar = Calendar.getInstance();
235 calendar.set(year, month-1, day);
236 Date newdate = calendar.getTime();
237 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
238 Calendar cal = Calendar.getInstance();
239 cal.setTime(newdate);
240 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
241 if(1 == dayWeek) {
242 cal.add(Calendar.DAY_OF_MONTH, -1);
243 }
244 cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
245 int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
246 cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
247 cal.add(Calendar.WEEK_OF_YEAR, -1);
248 String imptimeBegin = sdf.format(cal.getTime());
249 // System.out.println("星期六的日期:"+imptimeBegin);
250 return imptimeBegin;
251 }
252
253
254 /**
255 * 获取当前日期当前一周的开始日期 (周日)
256 */
257 public static String getCurrentWeekFirstDayByDate(String date) {
258 int year = Integer.parseInt(date.substring(0,4));
259 int month = Integer.parseInt(date.substring(4,6));
260 int day = Integer.parseInt(date.substring(6));
261 Calendar calendar = Calendar.getInstance();
262 calendar.set(year, month-1, day);
263 Date newdate = calendar.getTime();
264 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
265 Calendar cal = Calendar.getInstance();
266 cal.setTime(newdate);
267 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
268 if(1 == dayWeek) {
269 cal.add(Calendar.DAY_OF_MONTH, -1);
270 }
271 cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
272 int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
273 cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值
274
275 String imptimeBegin = sdf.format(cal.getTime());
276 // System.out.println("所在周星期日的日期:"+imptimeBegin);
277 return imptimeBegin;
278 }
279 /**
280 * 获取当前日期当前一周的结束日期 (周六)
281 */
282 public static String getCurrentWeekEndDayByDate(String date) {
283 int year = Integer.parseInt(date.substring(0,4));
284 int month = Integer.parseInt(date.substring(4,6));
285 int day = Integer.parseInt(date.substring(6));
286 Calendar calendar = Calendar.getInstance();
287 calendar.set(year, month-1, day);
288 Date newdate = calendar.getTime();
289 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
290 Calendar cal = Calendar.getInstance();
291 cal.setTime(newdate);
292 int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
293 if(1 == dayWeek) {
294 cal.add(Calendar.DAY_OF_MONTH, -1);
295 }
296 cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
297 int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
298 cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
299
300 String imptimeBegin = sdf.format(cal.getTime());
301 return imptimeBegin;
302 }
303
304
305 /**
306 * 返回上一个月的第一天
307 * @param date20120304
308 * @return 20120201
309 */
310 public static String previousMonthByDate(String date) {
311 // TODO Auto-generated method stub
312 int year = Integer.parseInt(date.substring(0,4));
313 int month = Integer.parseInt(date.substring(4,6));
314 int day = Integer.parseInt(date.substring(6));
315 Calendar calendar = Calendar.getInstance();
316 calendar.set(year, month-2, 1);
317 Date newdate = calendar.getTime();
318 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
319 Calendar cal = Calendar.getInstance();
320 cal.setTime(newdate);
321 String imptimeBegin = sdf.format(cal.getTime());
322 // System.out.println(imptimeBegin);
323 return imptimeBegin;
324 }
325
326 /**
327 * 返回下一个月的第一天
328 * @param date20120304
329 * @return 20120401
330 */
331 public static String nextMonthByDate(String date) {
332 // TODO Auto-generated method stub
333 int year = Integer.parseInt(date.substring(0,4));
334 int month = Integer.parseInt(date.substring(4,6));
335 int day = Integer.parseInt(date.substring(6));
336 Calendar calendar = Calendar.getInstance();
337 calendar.set(year, month, 1);
338 Date newdate = calendar.getTime();
339 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
340 Calendar cal = Calendar.getInstance();
341 cal.setTime(newdate);
342 String imptimeBegin = sdf.format(cal.getTime());
343 // System.out.println(imptimeBegin);
344 return imptimeBegin;
345 }
346 /**
347 * 返回当前月的第一天
348 * @param date20120103
349 * @return 20120101
350 */
351 public static String getCurrentMonthFirstDayByDate(String date) {
352 int year = Integer.parseInt(date.substring(0,4));
353 int month = Integer.parseInt(date.substring(4,6));
354 int day = Integer.parseInt(date.substring(6));
355 Calendar calendar = Calendar.getInstance();
356 calendar.set(year, month-1, 1);
357 Date newdate = calendar.getTime();
358 SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
359 Calendar cal = Calendar.getInstance();
360 cal.setTime(newdate);
361 String imptimeBegin = sdf.format(cal.getTime());
362 return imptimeBegin;
363 }
364
365 }