public class DateUtil { /** * 每分鐘秒數 */ public static final int MINUTE_OF_SECONDS = 60; /** * 一小時秒數 */ public static final int HOUR_OF_SECONDS = MINUTE_OF_SECONDS * 60; /** * 一天總共秒數 */ public static final int DAY_OF_SECONDS = HOUR_OF_SECONDS * 24; /** * 防重複提交的標識在redis中保存的有效期 */ public static final int PREVENT_REPEAT_COMMIT_VALID_TIME = MINUTE_OF_SECONDS * 10; public static String formatDate(Date date, String format) { SimpleDateFormat df = new SimpleDateFormat(format); return df.format(date); } public static Date parseDate(String date, String format) throws ParseException { SimpleDateFormat df = new SimpleDateFormat(format); return df.parse(date); } public static Date format(Date date, String format) throws ParseException { String formatDateStr = formatDate(date, format); return parseDate(formatDateStr, "yyyy-MM-dd"); } public static Integer getDayNum(Integer day, Integer dayUnit) { return BidConstant.periodDayNum.get(dayUnit) * day; } //得到本月第一天0點時間 public static Date getCurrentMouthOfFirstDayBegin() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 0, 0); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH)); return cal.getTime(); } //得到本月最後一天24點時間 public static Date getCurrentMouthOfLastDayEnd() { Calendar cal = Calendar.getInstance(); cal.set(cal.get(Calendar.YEAR), cal.get(Calendar.MONDAY), cal.get(Calendar.DAY_OF_MONTH), 0, 59, 59); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); cal.set(Calendar.HOUR_OF_DAY, 23); return cal.getTime(); } /** * 獲取指定日期及間隔時間的一天開始時間 * * @param date 指定日期 * @param days 間隔天數,指定日期以前使用負數,以後的使用正數 * @return */ public static Date getAppointDayBeginTime(Date date, int days) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE, days); c.set(Calendar.HOUR_OF_DAY, 00); c.set(Calendar.MINUTE, 0); c.set(Calendar.SECOND, 0); return c.getTime(); } /** * 獲取指定日期及間隔時間的一天結束時間 * * @param date 指定日期 * @param days 間隔天數,指定日期以前使用負數,以後的使用正數 * @return */ public static Date getCurrentBeforeDayOfEndTime(Date date, int days) { Calendar c = Calendar.getInstance(); c.setTime(date); c.add(Calendar.DATE, days); c.set(Calendar.HOUR_OF_DAY, 23); c.set(Calendar.MINUTE, 59); c.set(Calendar.SECOND, 59); return c.getTime(); } public static void main(String[] args) throws ParseException { String format = ThreadSafeDateUtil.format(getCurrentMouthOfFirstDayBegin(), "yyyy-MM-dd HH:mm:ss"); String format1 = ThreadSafeDateUtil.format(getCurrentMouthOfLastDayEnd(), "yyyy-MM-dd HH:mm:ss"); System.out.println(format); System.out.println(format1); Calendar calendar = Calendar.getInstance(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s"); // 指定一個日期 Date date = dateFormat.parse("2013-6-1 13:24:16"); // 對 calendar 設置爲 date 所定的日期 calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY, 00); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); System.out.println(calendar.getTime().toLocaleString()); Calendar c2 = new GregorianCalendar(); c2.add(Calendar.DATE, 3); c2.set(Calendar.HOUR_OF_DAY, 23); c2.set(Calendar.MINUTE, 59); c2.set(Calendar.SECOND, 59); System.out.println(c2.getTime().toLocaleString()); } }