package com.my.blog.website.utils; import org.apache.commons.lang3.StringUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; /** * Created by Administrator on 2017/3/10 010. */ public class DateKit { public static final int INTERVAL_DAY = 1; public static final int INTERVAL_WEEK = 2; public static final int INTERVAL_MONTH = 3; public static final int INTERVAL_YEAR = 4; public static final int INTERVAL_HOUR = 5; public static final int INTERVAL_MINUTE = 6; public static final int INTERVAL_SECOND = 7; public static final Date tempDate = new Date((new Long("-2177481952000")).longValue()); private static List<SimpleDateFormat> dateFormats = new ArrayList(12) { private static final long serialVersionUID = 2249396579858199535L; { this.add(new SimpleDateFormat("yyyy-MM-dd")); this.add(new SimpleDateFormat("yyyy/MM/dd")); this.add(new SimpleDateFormat("yyyy.MM.dd")); this.add(new SimpleDateFormat("yyyy-MM-dd HH:24:mm:ss")); this.add(new SimpleDateFormat("yyyy/MM/dd HH:24:mm:ss")); this.add(new SimpleDateFormat("yyyy.MM.dd HH:24:mm:ss")); this.add(new SimpleDateFormat("M/dd/yyyy")); this.add(new SimpleDateFormat("dd.M.yyyy")); this.add(new SimpleDateFormat("M/dd/yyyy hh:mm:ss a")); this.add(new SimpleDateFormat("dd.M.yyyy hh:mm:ss a")); this.add(new SimpleDateFormat("dd.MMM.yyyy")); this.add(new SimpleDateFormat("dd-MMM-yyyy")); } }; public DateKit() { } public static boolean isToday(Date date) { Date now = new Date(); boolean result = true; result &= date.getYear() == now.getYear(); result &= date.getMonth() == now.getMonth(); result &= date.getDate() == now.getDate(); return result; } public static long DaysBetween(Date date1, Date date2) { if(date2 == null) { date2 = new Date(); } long day = (date2.getTime() - date1.getTime()) / 86400000L; return day; } public static boolean compareDate(String date1, String date2) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { Date e = format.parse(date1); Date d2 = format.parse(date2); return !e.after(d2); } catch (ParseException var5) { var5.printStackTrace(); return false; } } public static Date dateFormat(String date, String dateFormat) { if(date == null) { return null; } else { SimpleDateFormat format = new SimpleDateFormat(dateFormat); try { return format.parse(date); } catch (Exception ignored) { } return null; } } public static Date dateFormat(String date) { return dateFormat(date, "yyyy-MM-dd HH:mm:ss"); } public static String dateFormat(Date date, String dateFormat) { if(date != null) { SimpleDateFormat format = new SimpleDateFormat(dateFormat); if(date != null) { return format.format(date); } } return ""; } public static String birthdayFormat(Date date) { if(date != null) { SimpleDateFormat format = null; if(date.before(tempDate)) { format = new SimpleDateFormat("MM-dd"); } else { format = new SimpleDateFormat("yyyy-MM-dd"); } if(date != null) { return format.format(date); } } return ""; } public static String dateFormat(Date date) { return dateFormat(date, "yyyy-MM-dd HH:mm:ss"); } public static boolean isExpiredDay(Date date1) { long day = ((new Date()).getTime() - date1.getTime()) / 86400000L; return day >= 1L; } public static Date getYesterday() { Date date = new Date(); long time = date.getTime() / 1000L - 86400L; date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(format.format(date)); } catch (Exception var5) { System.out.println(var5.getMessage()); } return date; } public static Date getWeekAgo() { Date date = new Date(); long time = date.getTime() / 1000L - 604800L; date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(format.format(date)); } catch (Exception var5) { System.out.println(var5.getMessage()); } return date; } public static String getDaysAgo(int interval) { Date date = new Date(); long time = date.getTime() / 1000L - (long)(interval * 60 * 60 * 24); date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { return format.format(date); } catch (Exception var6) { System.out.println(var6.getMessage()); return ""; } } public static Date getTomorrow() { Date date = new Date(); long time = date.getTime() / 1000L + 86400L; date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(format.format(date)); } catch (Exception var5) { System.out.println(var5.getMessage()); } return date; } public static Date getBeforeDate(String range) { Calendar today = Calendar.getInstance(); if("week".equalsIgnoreCase(range)) { today.add(4, -1); } else if("month".equalsIgnoreCase(range)) { today.add(2, -1); } else { today.clear(); } return today.getTime(); } public static Date getThisWeekStartTime() { Calendar today = Calendar.getInstance(); today.set(7, today.getFirstDayOfWeek()); Calendar weekFirstDay = Calendar.getInstance(); weekFirstDay.clear(); weekFirstDay.set(1, today.get(1)); weekFirstDay.set(2, today.get(2)); weekFirstDay.set(5, today.get(5)); return weekFirstDay.getTime(); } public static String getToday(String format) { String result = ""; try { Date today = new Date(); SimpleDateFormat simpleFormat = new SimpleDateFormat(format); result = simpleFormat.format(today); } catch (Exception var4) { ; } return result; } public static Date getStartDay(int year, int month) { Calendar today = Calendar.getInstance(); today.clear(); today.set(1, year); today.set(2, month - 1); today.set(5, 1); return today.getTime(); } public static List<Integer> getBeforeYearList(int before) { Calendar today = Calendar.getInstance(); int theYear = today.get(1); ArrayList list = new ArrayList(); for(int i = before; i >= 0; --i) { list.add(Integer.valueOf(theYear - i)); } return list; } public static Date dateAdd(int interval, Date date, int n) { long time = date.getTime() / 1000L; switch(interval) { case 1: time += (long)(n * 86400); break; case 2: time += (long)(n * 604800); break; case 3: time += (long)(n * 2678400); break; case 4: time += (long)(n * 31536000); break; case 5: time += (long)(n * 3600); break; case 6: time += (long)(n * 60); break; case 7: time += (long)n; } Date result = new Date(); result.setTime(time * 1000L); return result; } public static int dateDiff(int interval, Date begin, Date end) { long beginTime = begin.getTime() / 1000L; long endTime = end.getTime() / 1000L; long tmp = 0L; if(endTime == beginTime) { return 0; } else { if(endTime < beginTime) { tmp = beginTime; beginTime = endTime; endTime = tmp; } long intervalTime = endTime - beginTime; long result = 0L; switch(interval) { case 1: result = intervalTime / 86400L; break; case 2: result = intervalTime / 604800L; break; case 3: result = intervalTime / 2678400L; break; case 4: result = intervalTime / 31536000L; break; case 5: result = intervalTime / 3600L; break; case 6: result = intervalTime / 60L; break; case 7: result = intervalTime / 1L; } if(tmp > 0L) { result = 0L - result; } return (int)result; } } public static int getTodayYear() { int yyyy = Integer.parseInt(dateFormat(new Date(), "yyyy")); return yyyy; } public static Date getNow() { return new Date(); } public static String dateFormatRss(Date date) { return date != null?dateFormat(date, "E, d MMM yyyy H:mm:ss") + " GMT":""; } public static boolean betweenStartDateAndEndDate(Date startDate, Date endDate) { boolean bool = false; Date curDate = new Date(); if(curDate.after(startDate) && curDate.before(dateAdd(1, endDate, 1))) { bool = true; } return bool; } public static boolean nowDateBetweenStartDateAndEndDate(Date startDate, Date endDate) { boolean bool = false; Date curDate = new Date(); if(curDate.after(startDate) && curDate.before(endDate)) { bool = true; } return bool; } public static boolean nowDateAfterDate(Date date) { boolean bool = false; Date curDate = new Date(); if(curDate.after(date)) { bool = true; } return bool; } public static int getBetweenTodaysStartDateAndEndDate(Date startDate, Date endDate) { byte betweentoday = 0; if(startDate == null) { return betweentoday; } else { if(endDate == null) { Calendar calendar = Calendar.getInstance(); String year = (new Integer(calendar.get(1))).toString(); String month = (new Integer(calendar.get(2) + 1)).toString(); String day = (new Integer(calendar.get(5))).toString(); String strtodaytime = year + "-" + month + "-" + day; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); try { endDate = formatter.parse(strtodaytime); } catch (ParseException var10) { var10.printStackTrace(); } } int betweentoday1; if(endDate.after(startDate)) { betweentoday1 = (int)((endDate.getTime() - startDate.getTime()) / 86400000L); } else { betweentoday1 = (int)((startDate.getTime() - endDate.getTime()) / 86400000L); } return betweentoday1; } } public static String getTime(int format) { StringBuffer cTime = new StringBuffer(10); Calendar time = Calendar.getInstance(); int miltime = time.get(14); int second = time.get(13); int minute = time.get(12); int hour = time.get(11); int day = time.get(5); int month = time.get(2) + 1; int year = time.get(1); if(format != 14) { if(year >= 2000) { year -= 2000; } else { year -= 1900; } } if(format >= 2) { if(format == 14) { cTime.append(year); } else { cTime.append(getFormatTime(year, 2)); } } if(format >= 4) { cTime.append(getFormatTime(month, 2)); } if(format >= 6) { cTime.append(getFormatTime(day, 2)); } if(format >= 8) { cTime.append(getFormatTime(hour, 2)); } if(format >= 10) { cTime.append(getFormatTime(minute, 2)); } if(format >= 12) { cTime.append(getFormatTime(second, 2)); } if(format >= 15) { cTime.append(getFormatTime(miltime, 3)); } return cTime.toString(); } private static String getFormatTime(int time, int format) { StringBuffer numm = new StringBuffer(); int length = String.valueOf(time).length(); if(format < length) { return null; } else { for(int i = 0; i < format - length; ++i) { numm.append("0"); } numm.append(time); return numm.toString().trim(); } } public static int getUserAge(Date birthday) { if(birthday == null) { return 0; } else { Calendar cal = Calendar.getInstance(); if(cal.before(birthday)) { return 0; } else { int yearNow = cal.get(1); cal.setTime(birthday); int yearBirth = cal.get(1); return yearNow - yearBirth; } } } public static Date getDateByUnixTime(int unixTime) { return new Date((long)unixTime * 1000L); } public static long getUnixTimeLong() { return (long)getUnixTimeByDate(new Date()); } public static int getCurrentUnixTime() { return getUnixTimeByDate(new Date()); } public static int getUnixTimeByDate(Date date) { return (int)(date.getTime() / 1000L); } public static long getUnixTimeLong(Date date) { return date.getTime() / 1000L; } public static Date getNextDay(Date date) { long time = date.getTime() / 1000L + 86400L; date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(format.format(date)); } catch (Exception var5) { System.out.println(var5.getMessage()); } return date; } public static Date nextDay(Date date) { Date newDate = (Date)date.clone(); long time = newDate.getTime() / 1000L + 86400L; newDate.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { newDate = format.parse(format.format(newDate)); } catch (Exception var6) { System.out.println(var6.getMessage()); } return newDate; } public static Date getNowTime() { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(); String dateStr = dateFormat(date); try { date = format.parse(dateStr); } catch (ParseException var4) { var4.printStackTrace(); } return date; } public static Date getTomorrow(Date date1) { Calendar now = Calendar.getInstance(); now.setTime(date1); now.add(5, 1); return now.getTime(); } public static Date getWeekAgo(Date date) { Date newDate = (Date)date.clone(); long time = newDate.getTime() / 1000L - 604800L; newDate.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { newDate = format.parse(format.format(newDate)); } catch (Exception var6) { System.out.println(var6.getMessage()); } return newDate; } public static Date getDatebyTime(Date date, int n) { String str = dateFormat(date, "yyyy-MM-dd"); String[] strs = StringUtils.split(str, "-"); int month = Integer.parseInt(strs[1]); int monthnow = (month + n) % 12; int year = Integer.parseInt(strs[0]) + (month + n) / 12; str = year + "-" + monthnow + "-" + strs[2]; return dateFormat(str, "yyyy-MM-dd"); } public static Date yesterday(Date date) { Date newDate = (Date)date.clone(); long time = newDate.getTime() / 1000L - 86400L; newDate.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { newDate = format.parse(format.format(newDate)); } catch (Exception var6) { System.out.println(var6.getMessage()); } return newDate; } public static Date getYesterday(Date date) { long time = date.getTime() / 1000L - 86400L; date.setTime(time * 1000L); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { date = format.parse(format.format(date)); } catch (Exception var5) { System.out.println(var5.getMessage()); } return date; } public static String getStringNowTime() { Date date = new Date(); String dateStr = dateFormat(date); return dateStr; } public static long getSpecifyTimeSec(long time, int range) { Date date = new Date((time * 1000L + 28800000L) / 86400000L * 86400000L - 28800000L); long zeroTime = date.getTime() / 1000L; long specifyTime = (long)(range * 24 * 3600); return zeroTime + specifyTime; } public static String formatDateByUnixTime(long unixTime, String dateFormat) { return dateFormat(new Date(unixTime * 1000L), dateFormat); } public static Date convertToDate(String input) { Date date = null; if(null == input) { return null; } else { Iterator var2 = dateFormats.iterator(); while(var2.hasNext()) { SimpleDateFormat format = (SimpleDateFormat)var2.next(); try { format.setLenient(false); date = format.parse(input); } catch (ParseException var5) { ; } if(date != null) { break; } } return date; } } public static Long getTodayTime() { Calendar today = Calendar.getInstance(); today.set(11, 0); today.set(12, 0); today.set(13, 0); return Long.valueOf(String.valueOf(today.getTimeInMillis()).substring(0, 10)); } public static Long getYesterdayTime() { Calendar today = Calendar.getInstance(); today.set(11, -24); today.set(12, 0); today.set(13, 0); return Long.valueOf(String.valueOf(today.getTimeInMillis()).substring(0, 10)); } public static Long getTomorrowTime() { Calendar tomorrow = Calendar.getInstance(); tomorrow.set(11, 24); tomorrow.set(12, 0); tomorrow.set(13, 0); return Long.valueOf(String.valueOf(tomorrow.getTimeInMillis()).substring(0, 10)); } }