public classDateUtil {public final static String FORMAT_19 = "yyyy-MM-dd hh:mm:ss";public final static String FORMAT_10 = "yyyy-MM-dd";public final static String FORMAT_CN_19 = "yyyy年MM月dd日 hh时mm分ss秒";public final static String FORMAT_CN_10 = "yyyy年MM月dd日";/*** 日期转为指定格式*/
public staticString parsDateToString(Date date, String format) {
SimpleDateFormat sdf= newSimpleDateFormat(format);returnsdf.format(date);
}/*** 字符串转换为日期*/
public staticDate parsStringToDate(String formatDate, String format) {
SimpleDateFormat sdf= newSimpleDateFormat(format);
Date date= null;try{
date=sdf.parse(formatDate);
}catch(ParseException e) {
System.out.println("输入日期格式不正确,异常信息:" +e);
}returndate;
}/*** 获得指定日期的前num个月的日期*/
public static Date beforeMonth(Date date, intnum) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
calendar.add(calendar.MONTH, num* -1);
Date dBefore=calendar.getTime();returndBefore;
}private staticCalendar dateToCalendar(Date date) {
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);returncalendar;
}/*** 日期为所在月的第几周*/
public static intweekOfMonth(Date date) {returndateToCalendar(date).get(Calendar.WEEK_OF_MONTH);
}/*** 日期为所在年的第几周*/
public static intweekOfYear(Date date) {returndateToCalendar(date).get(Calendar.WEEK_OF_YEAR);
}/*** 日期为所在年的第几天*/
public static intdayOfYear(Date date) {returndateToCalendar(date).get(Calendar.DAY_OF_YEAR);
}/*** 根据一个时间获取该时间为星期几*/
public staticString dayOfWeek(Date date) {
SimpleDateFormat sdf= new SimpleDateFormat("E");returnsdf.format(date);
}/*** 计算两个时间之间的天数*/
public static intcountDaysBetween(Date d1, Date d2) {
Calendar c1=dateToCalendar(d1);
Calendar c2=dateToCalendar(d2);return Math.abs(Math.abs(c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR)) * 365 + (c1.get(Calendar.DAY_OF_YEAR) -c2.get(Calendar.DAY_OF_YEAR)));
}public static voidmain(String[] args) {
String formatDate= DateUtil.parsDateToString(newDate(), DateUtil.FORMAT_CN_19);
System.out.println("日期转为指定格式 : " +formatDate);
System.out.println("字符串转换为日期 : " +parsStringToDate(formatDate, DateUtil.FORMAT_CN_19));
System.out.println("获得指定日期的前num个月的日期 : " + beforeMonth(new Date(), 3));
System.out.println("日期为所在月的第几周 : " + weekOfMonth(newDate()));
System.out.println("日期为所在年的第几周 : " + weekOfYear(newDate()));
System.out.println("日期为所在年的第几天 : " + dayOfYear(newDate()));
System.out.println("日期是星期几 : " + dayOfWeek(newDate()));
Calendar c=Calendar.getInstance();
c.set(2017, 10, 25);
System.out.println("计算两个时间之间的天数 : " + countDaysBetween(newDate(), c.getTime()));
}
}