package com.java2nb.novel.core.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * 日期工具 * @author cd */ public class DateUtil { public static final String DATE_PATTERN = "yyyy-MM-dd"; public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss"; public static final String TIME_PATTERN = "HH:mm:ss"; public static final String TIME_LONG = "yyyyMMddHHmmss"; /** * 获取昨天的日期时间 * */ public static Date getYesterday(){ Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DATE, -1); return calendar.getTime(); } /** * 根据日期,获取当天开始时间 * */ public static Date getDateStartTime(Date date){ Calendar calendar = new GregorianCalendar(); calendar.setTime(date); /* * Calendar.HOUR_OF_DAY:是指获取24小时制的小时,取值范围:0-23; * Calendar.HOUR:是指获取12小时制的小时,取值范围:0-12,凌晨和中午都是0,不是12; * 需要配合Calendar.AM_PM使用; * */ calendar.set(Calendar.HOUR_OF_DAY,0); calendar.set(Calendar.MINUTE,0); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); return calendar.getTime(); } /** * 根据日期,获取当天结束时间 * */ public static Date getDateEndTime(Date date){ Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.set(Calendar.HOUR_OF_DAY,23); calendar.set(Calendar.MINUTE,59); calendar.set(Calendar.SECOND,59); calendar.set(Calendar.MILLISECOND,999); return calendar.getTime(); } /** * 获取上个月开始时间 * * @return */ public static Date getLastMonthStartTime(){ // 获取当前日期 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 0); calendar.add(Calendar.MONTH, -1); // 设置为1号,当前日期既为本月第一天 calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); } /** * 获取上个月结束时间 * * @return */ public static Date getLastMonthEndTime(){ // 获取当前日期 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.YEAR, 0); calendar.add(Calendar.MONTH, -1); // 获取当前月最后一天 calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); return calendar.getTime(); } public static Date getToday(){ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 999); return calendar.getTime(); } /** * 格式化日期 * */ public static String formatDate(Date date,String patten){ return new SimpleDateFormat(patten).format(date); } public static void main(String[] args) { System.out.println(formatDate(getToday(),TIME_LONG)); System.out.println(formatDate(getYesterday(),DATE_TIME_PATTERN)); System.out.println(formatDate(getDateStartTime(getYesterday()),DATE_TIME_PATTERN)); System.out.println(formatDate(getDateEndTime(getYesterday()),DATE_TIME_PATTERN)); System.out.println(formatDate(getLastMonthStartTime(),DATE_TIME_PATTERN)); System.out.println(formatDate(getLastMonthEndTime(),DATE_TIME_PATTERN)); } /** * 日期转星期 * * @param datetime "2017-01-01" * @return */ public static String dateToWeek() { Calendar calendar = Calendar.getInstance(); //System.out.println(dateToWeek(formatDate(calendar.getTime(),DATE_TIME_PATTERN))); SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd"); String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; Calendar cal = Calendar.getInstance(); // 获得一个日历 Date datet = null; try { datet = f.parse(formatDate(calendar.getTime(),DATE_TIME_PATTERN)); cal.setTime(datet); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。 if (w < 0) w = 0; return weekDays[w]; } }