package cn.com.qmhd.tools; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtils { private static DateUtils dateUtils = null; private Calendar calendar; private SimpleDateFormat sdf; public static DateUtils getInstance(){ if (dateUtils==null) { dateUtils=new DateUtils(); } return dateUtils; } /** * 时间格式转换 * @param date 指定日期 * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss" */ public String date(Date date,String format){ sdf=new SimpleDateFormat(format); String time=sdf.format(date); return time; } /** * 获取当前时间 * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss" * @return 返回字符串格式当前时间 */ public String getNowDate(String format){ sdf = new SimpleDateFormat(format); return sdf.format(new Date()); } //获取当前时间年份 public int getNowYear(){ return Calendar.getInstance().get(Calendar.YEAR); } //获取当前时间月份 public int getNowMonth(){ return Calendar.getInstance().get(Calendar.MONTH)+1; } //获取当前时间日期 public int getNowDay(){ return Calendar.getInstance().get(Calendar.DATE); } //获取当前时间小时 public int getNowHour(){ return Calendar.getInstance().get(Calendar.HOUR_OF_DAY); } //获取当前时间分钟 public int getNowMinute(){ return Calendar.getInstance().get(Calendar.MINUTE); } //获取当前时间秒 public int getNowSecond(){ return Calendar.getInstance().get(Calendar.SECOND); } /**获取指定某天的年、月、日、时、分、秒信息 * @param date 指定日期 * @param str 需要获取日期内信息名称 * @return 返回需要日期信息,当返回值为-1,则输入日期或者获取信息名称有误 */ public int dateInfos(Date date,String str){ calendar=Calendar.getInstance(); calendar.setTime(date); int year=calendar.get(Calendar.YEAR); int month=calendar.get(Calendar.MONTH)+1; int day=calendar.get(Calendar.DATE); int hour=calendar.get(Calendar.HOUR); int minute=calendar.get(Calendar.MINUTE); int second=calendar.get(Calendar.SECOND); if("year".equals(str)){ return year; }else if("month".equals(str)){ return month; }else if("day".equals(str)){ return day; }else if("hour".equals(str)){ return hour; }else if("minute".equals(str)){ return minute; }else if("second".equals(str)){ return second; } return -1; } /** * 获取指定日期之前或者之后某月第一天 * @param date 指定日期 * @param month 指定日期之前几月(负数)或者之后几月(正数),当month=0时,则得到指定日期当月 * @param format 指定之前几天(负数)或者之后几天(正数) * @return 返回字符串格式日期 */ public String getFirstDay(Date date,int month,String format){ calendar=Calendar.getInstance(); calendar.setTime(date); calendar.set(Calendar.DAY_OF_MONTH,1); calendar.add(Calendar.MONTH, month); Date getDate=calendar.getTime(); return date(getDate, format); } /** * 获取指定日期之前或者之后某月最后一天 * @param date 指定日期 * @param month 指定日期之前几月(负数)或者之后几月(正数),当month=0时,则得到指定日期当月 * @param format 指定之前几天(负数)或者之后几天(正数) * @return 返回字符串格式日期 */ public String getLastDay(Date date,int month,String format){ calendar=Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.MONTH, month+1); calendar.set(Calendar.DAY_OF_MONTH, 1); calendar.add(Calendar.DAY_OF_MONTH,-1); Date getDate=calendar.getTime(); return date(getDate, format); } /** * 获取指定时间前或后几天日期 * @param date 指定日期 * @param day 指定日期之前几天(负数)或者之后几天(正数) * @param format 日期转换成字符串的格式,例如:"yyyy-MM-dd HH:mm:ss" * @return time 返回字符串格式日期 */ public String getBeforeOrAfterDate(Date date,int day,String format){ calendar=Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, day); Date getDate=calendar.getTime(); sdf=new SimpleDateFormat(format); String time=sdf.format(getDate); return time; } /** * 获取指定时间前或后几天日期 * @param date 指定日期 * @param day 指定之前几天(负数)或者之后几天(正数) * @return 返回date类型日期 */ public int getBeforeOrAfterDay(Date date,int day){ calendar=Calendar.getInstance(); calendar.setTime(date); return calendar.get(Calendar.DATE)+day; } }