常用的日期转换工具 package cn.toysuperman.operator.utils;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.List;public clas
package cn.toysuperman.operator.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; public class DateUtil { public final static SimpleDateFormat day_sdf = new SimpleDateFormat("yyyy-MM-dd"); public final static SimpleDateFormat time_sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public final static SimpleDateFormat time_stamp_sdf = new SimpleDateFormat("yyyyMMddHHmmss"); public final static SimpleDateFormat day_hour_sdf= new SimpleDateFormat("MM-dd HH:mm"); public static String getTimeFormat(Date date) { return time_sdf.format(date); } public static String getDayFormat(Date date) { return day_sdf.format(date); } public static String getTimeStampFormat(Date date) { return time_stamp_sdf.format(date); } public static String getDayHourFormat(Date date) { return day_hour_sdf.format(date); } public static Date getBeforedays(int beforeDays) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, beforeDays);// 得到前N天 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); Date date = calendar.getTime(); return date; } public static Date getToday() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 0); // calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); Date date = calendar.getTime(); return date; } /** * 获取8位不重复随机码(取当前时间戳转化为十六进制) * * @return */ public static String getHexUniqueId(Date date) { long time = date.getTime(); return Integer.toHexString((int) time); } /** * 比较两个时间相差多少秒 * */ public static long diffSecond(Date date1, Date date2) { return (date1.getTime() - date2.getTime()) / 1000; } /** * 比较两个时间相差多少秒 * */ public static long diffMillSecond(Date date1, Date date2) { return (date1.getTime() - date2.getTime()); } /** * 根据日期获得星期 * * @param date * @return */ public static String getWeekOfDate(Date date) { // String[] weekDaysName = { "星期日", "星期一", "星期二", "星期三", "星期四", // "星期五","星期六" }; String[] weekDaysCode = { "0", "1", "2", "3", "4", "5", "6" }; Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; return weekDaysCode[intWeek]; } /** * 根据日期获得星期 * * @param date * @return */ public static String getWeekNameOfDate(Date date) { String[] weekDaysName = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; // String[] weekDaysCode = { "0", "1", "2", "3", "4", "5", "6" }; Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); int intWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1; return weekDaysName[intWeek]; } /** * 获得指定日期前/后周日期 * * @param date * @return */ public static Date getSpecialDay(Date date, int days) { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); calendar.add(Calendar.DATE, days);// -7:前一周 7:后一周 return calendar.getTime(); } /** * 获得周一的日期 * * @param date * @return */ public static Date getMonday(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); return calendar.getTime(); } /** * 获得周三的日期 * * @param date * @return */ public static Date getWednesday(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY); return calendar.getTime(); } /** * 获得周五的日期 * * @param date * @return */ public static Date getFriday(Date date) { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); calendar.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY); return calendar.getTime(); } /** * 获得周日的日期 * * @param date * @return */ public static Date getSunday(Date date) { Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(date); cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY); return cal.getTime(); } /** * 当前日期前几天或者后几天的日期 * * @param n * @return */ public static Date afterNDay(int n) { Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(new Date()); cal.add(Calendar.DATE, n); return cal.getTime(); } /** * 判断两个日期是否在同一周 * * @param date1 * @param date2 * @return */ public static boolean isSameWeekDates(Date date1, Date date2) { Calendar cal1 = Calendar.getInstance(); Calendar cal2 = Calendar.getInstance(); cal1.setFirstDayOfWeek(Calendar.MONDAY); cal2.setFirstDayOfWeek(Calendar.MONDAY); cal1.setTime(date1); cal2.setTime(date2); int subYear = cal1.get(Calendar.YEAR) - cal2.get(Calendar.YEAR); if (0 == subYear) { if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true; } else if (1 == subYear && 11 == cal2.get(Calendar.MONTH)) { // 如果12月的最后一周横跨来年第一周的话则最后一周即算做来年的第一周 if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true; } else if (-1 == subYear && 11 == cal1.get(Calendar.MONTH)) { if (cal1.get(Calendar.WEEK_OF_YEAR) == cal2.get(Calendar.WEEK_OF_YEAR)) return true; } return false; } // 取得日期是某年的第几周 public static int getWeekOfYear(Date date) { Calendar cal = Calendar.getInstance(); cal.setFirstDayOfWeek(Calendar.MONDAY); cal.setTime(date); int week_of_year = cal.get(Calendar.WEEK_OF_YEAR); return week_of_year; } // 取得某个月有多少天 public static int getDaysOfMonth(int year, int month) { Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, year); cal.set(Calendar.MONTH, month - 1); int days_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH); return days_of_month; } // 取得两个日期之间的相差多少天 public static long getDaysBetween(Date date0, Date date1) { long daysBetween = (date0.getTime() - date1.getTime()) / 86400000;// 86400000=3600*24*1000 // 用立即数,减少乘法计算的开销 return daysBetween; } public static Date getZeroClock(Date date) { try { String zeroClock = DateUtil.day_sdf.format(date); return DateUtil.day_sdf.parse(zeroClock); } catch (ParseException e) { e.printStackTrace(); } return null; } public static int getDayOfMonth(Date date) { int intWeek = 1; try { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.setTime(date); intWeek = calendar.get(Calendar.DAY_OF_MONTH); } catch (Exception e) { e.printStackTrace(); } return intWeek; } public static Date getFirstDayOfMonth(Date date) { try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-"); return day_sdf.parse(sdf.format(date) + "01"); } catch (Exception e) { e.printStackTrace(); } return null; } public static Date getLastDayOfMonth(Date date) { try { return getSpecialDay(getFirstDayOfNextMonth(date), -1); } catch (Exception e) { e.printStackTrace(); } return null; } public static int getLengthOfMonth(Date date) { try { return getDayOfMonth(getLastDayOfMonth(date)); } catch (Exception e) { e.printStackTrace(); } return 0; } public static Date getFirstDayOfNextMonth(Date date) { try { SimpleDateFormat sdf_t = new SimpleDateFormat("yyyy-M-dd"); SimpleDateFormat sdf_y = new SimpleDateFormat("yyyy"); SimpleDateFormat sdf_m = new SimpleDateFormat("MM"); int year = new Integer(sdf_y.format(date)); int next_month = new Integer(sdf_m.format(date)) + 1; if (next_month > 12) { year++; next_month = 1; } return sdf_t.parse(year + "-" + next_month + "-01"); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 获取指定日期(dateStr)之前的beforeDays天的日期列表 * * @param dateStr * @param beforeDays * @return */ public static ListgetDayListBefore(String dateStr, int beforeDays) { List list = new ArrayList (); Date date = null; try { date = new SimpleDateFormat("yyyy-MM-dd").parse(dateStr); } catch (ParseException e) { e.printStackTrace(); } for (int i = beforeDays; i > 0; i--) { Calendar cal = Calendar.getInstance(); cal.setTime(date); int day = cal.get(Calendar.DATE); cal.set(Calendar.DATE, day - i); String dayBefore = new SimpleDateFormat("yyyy-MM-dd").format(cal .getTime()); list.add(dayBefore); } return list; } public static List getDayListBetween(Date start,Date end) { List list = new ArrayList (); int beforeDays = (int) getDaysBetween(start, end); for (int i = -beforeDays; i >= 0; i--) { Calendar cal = Calendar.getInstance(); cal.setTime(end); int day = cal.get(Calendar.DATE); cal.set(Calendar.DATE, day - i); String dayBefore = day_sdf.format(cal.getTime()); list.add(dayBefore); } return list; } /* 获取时间差 */ public static String getTimesToNow(String date){ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String now = format.format(new Date()); String returnText = null; try { long from = format.parse(date).getTime(); long to = format.parse(now).getTime(); int days = (int) ((to - from)/(1000 * 60 * 60 * 24)); if(days == 0){//一天以内,以分钟或者小时显示 int hours = (int) ((to - from)/(1000 * 60 * 60)); if(hours == 0){ int minutes = (int) ((to - from)/(1000 * 60)); if(minutes == 0){ returnText = "刚刚"; }else{ returnText = minutes + "分钟前..."; } }else{ returnText = hours + "小时前..."; } } else if(days == 1){ returnText = "昨天"; }else{ returnText = days + "天前..."; } } catch (ParseException e) { e.printStackTrace(); } return returnText; } public static void main(String[] args) throws ParseException { /* * List list = DateUtil.getSpecialDayListBefore( * DateUtil.day_sdf.format(new Date()), 7); for (String day : list) { * System.out.println(day); } * System.out.println(DateUtil.day_sdf.parse(list.get(0)).getClass()); */ /* * String weekday = getWeekOfDate(getSunday(new Date())); * System.out.println("weekday : "+ (double)1/2); * System.out.println("sunday : "+ getSunday(new Date())); * System.out.println("monday : "+ getMonday(new Date())); * System.out.println("monday : "+ getSpecialDay(getMonday(new * Date()),7)); */ /* SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd"); String end = "2016-08-01"; String start = "2016-08-31"; Date s = sim.parse(start); Date e = sim.parse(end);*/ // System.out.println(getFirstDayOfMonth(e)); // System.out.println(getFirstDayOfNextMonth(s)); // // System.out.println(DateUtil.getDaysBetween(e,s)); /* List list =getDayListBetween(e,s); for(String str:list){ System.out.println(str); }*/ System.err.println(getTimesToNow("2017-02-15 12:00")); } }