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()); } }