时间工具类

  1 public class DateUtil {
  2 
  3     /**
  4      * 获取 时间和当前时间的时间差,用字符串表示出来
  5      *
  6      * @param date
  7      * @return
  8      */
  9     public static String absTime(Date date) {
 10         Long newTime = System.currentTimeMillis();
 11         if (date == null) {
 12             return "";
 13         }
 14         Long intervalTime = newTime - date.getTime();
 15 
 16         if (intervalTime < 1000 * 60 * 1) {
 17             return "刚刚";
 18         } else if (intervalTime < (1000L * 60 * 60)) {
 19             return (intervalTime / (1000L * 60)) + "分钟前";
 20         } else if (intervalTime < (1000L * 60 * 60 * 24)) {
 21             return (intervalTime / (1000L * 60 * 60)) + "小时前";
 22         } else if (intervalTime < (1000L * 60 * 60 * 24 * 30)) {
 23             return (intervalTime / (1000L * 60 * 60 * 24)) + "天前";
 24         } else if (intervalTime < (1000L * 60 * 60 * 24 * 30 * 356)) {
 25             return (intervalTime / (1000L * 60 * 60 * 24 * 30)) + "月前";
 26         } else {
 27             return (intervalTime / (1000L * 60 * 60 * 24 * 30 * 356)) + "年前";
 28         }
 29     }
 30 
 31     /**
 32      * 时间格式转换
 33      *
 34      * @param date
 35      * @param format
 36      * @return
 37      */
 38     public static String DateToString(Date date, String format) {
 39         SimpleDateFormat sdf = new SimpleDateFormat(format);
 40         return sdf.format(date);
 41     }
 42 
 43     public static String getNewDate() {
 44         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 45         return sdf.format(new Date());
 46     }
 47 
 48     /**
 49      * 时间格式转换
 50      *
 51      * @param time
 52      * @param format
 53      * @return
 54      * @throws ParseException 字符换转换成int型数据时可能出现的异常
 55      * @author xujiayu
 56      * @time 2016/04/01
 57      */
 58     public static String timeFormatConversion(String time, String format) {
 59         if (time == null || "".equals(time)) {
 60             return "";
 61         }
 62         if (TextUtil.startCheck("^[0-9]+$", time)) {
 63             SimpleDateFormat sdf = new SimpleDateFormat(format);
 64             Date date = new Date(Long.parseLong(time));
 65             String formatTime = sdf.format(date);
 66             return formatTime;
 67         } else {
 68             SimpleDateFormat sdf = new SimpleDateFormat(format);
 69             Date date = null;
 70             try {
 71                 date = sdf.parse(time);
 72             } catch (ParseException e) {
 73                 e.printStackTrace();
 74                 return "";
 75             }
 76             String formatTime = date.getTime() + "";
 77             return formatTime;
 78         }
 79     }
 80 
 81 
 82     /**
 83      * 获取一定范围内的日期
 84      *
 85      * @param date
 86      * @param beforeDays
 87      * @return
 88      */
 89     public static List<String> getDatePeriod(Date date, int beforeDays) {
 90         List<String> datePeriodList = new ArrayList<String>();
 91         DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
 92         Calendar cal = Calendar.getInstance();
 93         cal.setTime(date);
 94         int inputDayOfYear = cal.get(Calendar.DAY_OF_YEAR);
 95         for (int i = 0; i < beforeDays; i++) {
 96             cal.set(Calendar.DAY_OF_YEAR, inputDayOfYear + i);
 97             datePeriodList.add(dateFormat.format(cal.getTime()));
 98         }
 99         return datePeriodList;
100     }
101 
102     /**
103      * 获取时间差 (毫秒)
104      *
105      * @param d1
106      * @param d2
107      * @return
108      */
109     public static long timeDifference(Date d1, Date d2) {
110 
111         return d1.getTime() - d2.getTime();
112 
113     }
114 
115     /**
116      * 通过时间秒毫秒数判断两个时间的间隔
117      *
118      * @param date1
119      * @param date2
120      * @return
121      */
122     public static int differentDaysByMillisecond(Date date1, Date date2) {
123         int days = (int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24));
124         return days;
125     }
126 
127     /**
128      * 获取格式化时间
129      *
130      * @param dateStr
131      * @param pattern
132      * @return
133      * @throws ParseException
134      */
135     public static Date getDate(String dateStr, String pattern) throws ParseException {
136         SimpleDateFormat format = new SimpleDateFormat(pattern);
137         return format.parse(dateStr);
138     }
139 
140     /**
141      * 获取当前时间
142      *
143      * @return
144      * @throws ParseException
145      * @author huangzhengyan
146      */
147     public static String getNowDate(Date creatDate) {
148         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
149         return format.format(creatDate);
150 
151     }
152 
153     public static String getNowDate1(Date creatDate) {
154         SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
155         return format.format(creatDate);
156 
157     }
158 
159     public static String getNowDate2(Date creatDate) {
160         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
161         return format.format(creatDate);
162     }
163 
164     public static String getNowDate3(Date creatDate) {
165         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM");
166         return format.format(creatDate);
167     }
168 
169     public static String getNowDate4(Date creatDate) {
170         SimpleDateFormat format = new SimpleDateFormat("HHmmss");
171         return format.format(creatDate);
172     }
173     public static String getNowDate5(Date creatDate) {
174         SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
175         return format.format(creatDate);
176     }
177 
178     public static Date getAppointDate(final Date date, int i) {
179         if (null == date) {
180             return null;
181         }
182         Calendar calendar = Calendar.getInstance();
183         calendar.setTime(date);
184         calendar.add(Calendar.DATE, i);
185         return calendar.getTime();
186     }
187 
188 
189     public static String getTodyCalculateDay(Integer mon, Integer day, String formatType) {
190         SimpleDateFormat format = new SimpleDateFormat(formatType);
191         Calendar cale = null;
192         cale = Calendar.getInstance();
193         cale.add(Calendar.MONTH, mon);
194         cale.set(Calendar.DAY_OF_MONTH, day);
195         return format.format(cale.getTime());
196     }
197 
198     public static String getNowWeekBegin(Integer i, String time, String formatType) {
199         SimpleDateFormat simdf = new SimpleDateFormat(formatType);
200 
201         Calendar cal = Calendar.getInstance();
202         try {
203             cal.setTime(simdf.parse(time));
204             if (cal.get(Calendar.DAY_OF_WEEK) == 1) {
205                 cal.add(Calendar.DAY_OF_MONTH, -1);
206             }
207         } catch (ParseException e) {
208             e.printStackTrace();
209             return null;
210         }
211 
212         switch (i) {
213             case 1:
214                 cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
215                 break;
216             case 2:
217                 cal.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
218                 break;
219             case 3:
220                 cal.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
221                 break;
222             case 4:
223                 cal.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
224                 break;
225             case 5:
226                 cal.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
227                 break;
228             case 6:
229                 cal.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
230                 break;
231             case 7:
232                 cal.add(Calendar.WEEK_OF_YEAR, 1);
233                 cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
234                 break;
235             default:
236                 return null;
237         }
238         return simdf.format(cal.getTime());
239     }
240 
241     public static List<String> getNowWeekBeginAll(String time, String formatType) {
242         List<String> list = new ArrayList<String>();
243         String weekTime = null;
244         for (int i = 1; i < 8; i++) {
245             weekTime = getNowWeekBegin(i, time, formatType);
246             if (weekTime == null) {
247                 return null;
248             }
249             list.add(weekTime);
250         }
251         return list;
252     }
253 
254 
255     public static boolean isWorkDay(Date date) {
256         Calendar cal = Calendar.getInstance();
257         cal.setTime(date);
258         int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
259         if (w < 0 || w == 0 || w == 6) {
260             return false;
261         } else {
262             return true;
263         }
264 
265     }
266 
267     public static String getTodyLaterDay(Integer mon, Integer day, String formatType) {
268         SimpleDateFormat format = new SimpleDateFormat(formatType);
269         Calendar cale = null;
270         cale = Calendar.getInstance();
271         cale.add(Calendar.MONTH, mon);
272         cale.add(Calendar.DAY_OF_MONTH, day);
273         return format.format(cale.getTime());
274     }
275 
276     public static String getTodyLaterDayCompleteness(Integer mon, Integer day, String formatType) {
277         SimpleDateFormat format = new SimpleDateFormat(formatType);
278         Calendar cale = null;
279         cale = Calendar.getInstance();
280         cale.add(Calendar.MONTH, mon);
281         cale.add(Calendar.DAY_OF_MONTH, day);
282         cale.set(Calendar.HOUR_OF_DAY, 23);
283         cale.set(Calendar.MINUTE, 59);
284         cale.set(Calendar.SECOND, 59);
285         return format.format(cale.getTime());
286     }
287 
288     public static void main(String[] args) {
289 
290         Calendar calendar = Calendar.getInstance();
291         calendar.add(Calendar.DAY_OF_MONTH, -1);
292         SimpleDateFormat format = new SimpleDateFormat("yyy/MM/dd");
293         System.out.println(format.format(calendar.getTime()));
294         calendar.add(Calendar.DAY_OF_MONTH, -1);
295         System.out.println(format.format(calendar.getTime()));
296         System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
297     }
298 
299     /**
300      * 返回指定日期
301      *
302      * @param date 标准日期
303      * @param i    偏移量 正负数 1 = 加一天日期, -1 = 一天日期
304      * @return 指定日期
305      */
306     public static Date getBeginAppointDate(final Date date, int i) {
307         if (null == date) {
308             return null;
309         }
310         Calendar calendar = Calendar.getInstance();
311         calendar.setTime(date);
312         calendar.add(Calendar.DATE, i);
313         calendar.set(Calendar.HOUR_OF_DAY, 0);
314         calendar.set(Calendar.MINUTE, 0);
315         calendar.set(Calendar.SECOND, 0);
316         return calendar.getTime();
317     }
318 
319     public static Date getEndAppointDate(final Date date, int i) {
320         if (null == date) {
321             return null;
322         }
323         Calendar calendar = Calendar.getInstance();
324         calendar.setTime(date);
325         calendar.add(Calendar.DATE, i);
326         calendar.set(Calendar.HOUR_OF_DAY, 23);
327         calendar.set(Calendar.MINUTE, 59);
328         calendar.set(Calendar.SECOND, 59);
329         return calendar.getTime();
330     }
331 
332     public static Date getAppointDateMinute(final Date date, int i) {
333         if (null == date) {
334             return null;
335         }
336         Calendar calendar = Calendar.getInstance();
337         calendar.setTime(date);
338         calendar.add(Calendar.MINUTE, i);
339         return calendar.getTime();
340     }
341 }

 

posted @ 2020-04-07 09:27  一个九零後的程序猿  阅读(87)  评论(0编辑  收藏  举报