gistfile1.txt package com.wujiangpo.test.util;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util.regex.Pattern;public class D
package com.wujiangpo.test.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.regex.Pattern;
public class DateUtil {
private static final int[] DAY_OF_MONTH = new int[] { 31, 28, 31, 30, 31,
30, 31, 31, 30, 31, 30, 31 };
/**
*
* @param strDate
* 输入日期
* @param dayNum
* 相隔天数 正整数表示前推 ,负整数表示后推
* @return 日期字符串
* @throws ParseException
*/
public static String getDifferDate(String strDate, int dayNum)
throws ParseException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sf.parse(strDate);
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, dayNum);
String sqldate = sf.format(c.getTime());
return sqldate;
}
/**
* 取得当前日期相隔dayNum天的日期
*
* @param strDate
* @param dayNum
* @return
* @throws ParseException
*/
public static String getDifferDate(int dayNum) throws ParseException {
Date date = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DATE, dayNum);
String strDate = sf.format(c.getTime());
return strDate;
}
/**
* 把日期字符串转换为util.date类型
*
* @param strDate
* 日期字符串(yyyy-MM-dd)
*
*
* @return java.sql.date 类型
*/
public static java.util.Date getDate(String strDate) {
return java.sql.Date.valueOf(strDate);
}
/**
* 校验日期YYYY-MM-DD格式是否正确
*
* @param date
* @return
*/
public static boolean checkDateForm(String date) {
if (date == null || "".equals(date))
return false;
String eL = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";
return Pattern.compile(eL).matcher(date).matches();
}
/**
* 取得指定天数后的时间
*
* @param date
* 基准时间
* @param dayAmount
* 指定天数,允许为负数
* @return 指定天数后的时间
*/
public static Date addDay(Date date, int dayAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, dayAmount);
return calendar.getTime();
}
/**
* 取得指定小时数后的时间
*
* @param date
* 基准时间
* @param hourAmount
* 指定小时数,允许为负数
* @return 指定小时数后的时间
*/
public static Date addHour(Date date, int hourAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.HOUR, hourAmount);
return calendar.getTime();
}
/**
* 取得指定分钟数后的时间
*
* @param date
* 基准时间
* @param minuteAmount
* 指定分钟数,允许为负数
* @return 指定分钟数后的时间
*/
public static Date addMinute(Date date, int minuteAmount) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.MINUTE, minuteAmount);
return calendar.getTime();
}
/**
* 比较两日期对象中的小时和分钟部分的大小.
*
* @param date
* 日期对象1, 如果为 会以当前时间的日期对象代替
* @param anotherDate
* 日期对象2, 如果为 会以当前时间的日期对象代替
* @return 如果日期对象1大于日期对象2, 则返回大于0的数; 反之返回小于0的数; 如果两日期对象相等, 则返回0.
*/
public static int compareHourAndMinute(Date date, Date anotherDate) {
if (date == null) {
date = new Date();
}
if (anotherDate == null) {
anotherDate = new Date();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
int hourOfDay1 = cal.get(Calendar.HOUR_OF_DAY);
int minute1 = cal.get(Calendar.MINUTE);
cal.setTime(anotherDate);
int hourOfDay2 = cal.get(Calendar.HOUR_OF_DAY);
int minute2 = cal.get(Calendar.MINUTE);
if (hourOfDay1 > hourOfDay2) {
return 1;
} else if (hourOfDay1 == hourOfDay2) {
// 小时相等就比较分钟
return minute1 > minute2 ? 1 : (minute1 == minute2 ? 0 : -1);
} else {
return -1;
}
}
/**
* 比较两日期对象的大小, 忽略秒, 只精确到分钟.
*
* @param date
* 日期对象1, 如果为 会以当前时间的日期对象代替
* @param anotherDate
* 日期对象2, 如果为 会以当前时间的日期对象代替
* @return 如果日期对象1大于日期对象2, 则返回大于0的数; 反之返回小于0的数; 如果两日期对象相等, 则返回0.
*/
public static int compareIgnoreSecond(Date date, Date anotherDate) {
if (date == null) {
date = new Date();
}
if (anotherDate == null) {
anotherDate = new Date();
}
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
date = cal.getTime();
cal.setTime(anotherDate);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
anotherDate = cal.getTime();
return date.compareTo(anotherDate);
}
/**
* 取得当前时间的字符串表示,格式为2006-01-10 20:56:30.756
*
* @return 当前时间的字符串表示
*/
public static String currentDate2String() {
return date2String(new Date());
}
/**
* 取得当前时间的字符串表示,格式为2006-01-10
*
* @return 当前时间的字符串表示
*/
public static String currentDate2StringByDay() {
return date2StringByDay(new Date());
}
/**
* 取得今天的最后一个时刻
*
* @return 今天的最后一个时刻
*/
public static Date currentEndDate() {
return getEndDate(new Date());
}
/**
* 取得今天的第一个时刻
*
* @return 今天的第一个时刻
*/
public static Date currentStartDate() {
return getStartDate(new Date());
}
/**
* 把时间转换成字符串,格式为2006-01-10 20:56:30.756
*
* @param date
* 时间
* @return 时间字符串
*/
public static String date2String(Date date) {
return date2String(date, "yyyy-MM-dd HH:mm:ss.SSS");
}
/**
* 按照指定格式把时间转换成字符串,格式的写法类似yyyy-MM-dd HH:mm:ss.SSS
*
* @param date
* 时间
* @param pattern
* 格式
* @return 时间字符串
*/
public static String date2String(Date date, String pattern) {
if (date == null) {
return null;
}
return (new SimpleDateFormat(pattern)).format(date);
}
/**
* 把时间转换成字符串,格式为2006-01-10
*
* @param date
* 时间
* @return 时间字符串
*/
public static String date2StringByDay(Date date) {
return date2String(date, "yyyy-MM-dd");
}
/**
* 把时间转换成字符串,格式为2006-01-10 20:56
*
* @param date
* 时间
* @return 时间字符串
*/
public static String date2StringByMinute(Date date) {
return date2String(date, "yyyy-MM-dd HH:mm");
}
/**
* 把时间转换成字符串,格式为2006-01-10 20:56:30
*
* @param date
* 时间
* @return 时间字符串
*/
public static String date2StringBySecond(Date date) {
return date2String(date, "yyyy-MM-dd HH:mm:ss");
}
/**
* 根据某星期几的英文名称来获取该星期几的中文数.
* e.g. 