import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateUtils;
public class DateHelper extends DateUtils {
public static final String DEF_PATTERN = "yyyy-MM-dd HH:mm:ss";
public static final String[] DATE_PATTERNS = {
"yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM-dd HH", "yyyy-MM-dd", "yyyy-MM",
"yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM/dd HH", "yyyy/MM/dd", "yyyy/MM"
};
/**
* 格式化输出
* @param dt
* @param pattern
* @return
*/
public static String format(Date dt) {
return format(dt, DEF_PATTERN);
}
/**
* 格式化输出
* @param dt
* @param pattern
* @return
*/
public static String format(Date dt, String pattern) {
SimpleDateFormat simpleDateFormat;
if (dt == null)
return null;
simpleDateFormat = new SimpleDateFormat(pattern);
return simpleDateFormat.format(dt);
}
/**
* Date 转换成 XMLGregorianCalendar
* @param dt
* @return
* @throws DatatypeConfigurationException
*/
public static XMLGregorianCalendar toXmlDate(Date dt) throws DatatypeConfigurationException {
if (dt == null)
return null;
GregorianCalendar cal = new GregorianCalendar();
cal.setTime(dt);
return DatatypeFactory.newInstance().newXMLGregorianCalendar(cal);
}
/**
* XMLGregorianCalendar 转换成 Date
* @param dt
* @return
*/
public static Date toDate(XMLGregorianCalendar cal) {
if (cal == null)
return null;
return cal.toGregorianCalendar().getTime();
}
/**
* 日期转换
* @param dateValue
* @return
* @throws ParseException
*/
public static Date parseDateIgnoreError(final String dateValue) {
try {
return parseDate(dateValue, DATE_PATTERNS);
} catch (ParseException e) {
return null;
}
}
/**
* 日期转换
* @param dateValue
* @return
* @throws ParseException
*/
public static Date parseDate(final String dateValue) throws ParseException {
return parseDate(dateValue, DATE_PATTERNS);
}
/**
* 获取两个日期之间的相差秒数
* @param beginDate
* @param endDate
* @return
*/
public static long differSeconds(Date beginDate, Date endDate) {
long offsetTime = endDate.getTime() - beginDate.getTime();
return Math.abs(offsetTime / 1000);
}
/**
* 获取两个日期之间的相差分钟
* @param beginDate
* @param endDate
* @return
*/
public static long differMinutes(Date beginDate, Date endDate) {
return differSeconds(beginDate, endDate) / 60;
}
/**
* 获取两个日期之间的相差小时
* @param beginDate
* @param endDate
* @return
*/
public static long differHours(Date beginDate, Date endDate) {
return differMinutes(beginDate, endDate) / 60;
}
/**
* 获取两个日期之间的相差天数
* @param beginDate
* @param endDate
* @return
*/
public static long differDays(Date beginDate, Date endDate) {
return differHours(beginDate, endDate) / 24;
}
/**
* 获取当前时间的年月日时分秒 拼接的字符串
* @return
*/
public static String dateFullNumberStr(){
StringBuffer sb = new StringBuffer();
Calendar cal = Calendar.getInstance();
String year = completeStr(String.valueOf(cal.get(Calendar.YEAR))); //获取年份
String month = completeStr(String.valueOf(cal.get(Calendar.MONTH)+1));//获取月份
String day = completeStr(String.valueOf(cal.get(Calendar.DATE)));
String hour = completeStr(String.valueOf(cal.get(Calendar.HOUR_OF_DAY)));
String min = completeStr(String.valueOf(cal.get(Calendar.MINUTE)));
String second = completeStr(String.valueOf(cal.get(Calendar.SECOND)));
sb.append(year);
sb.append(month);
sb.append(day);
sb.append(hour);
sb.append(min);
sb.append(second);
return sb.toString();
}
public static String completeStr(String str){
StringBuilder sb = new StringBuilder();
if (StringUtils.isBlank(str))
return "";
if (StringUtils.defaultString(str).length() == 1) {
sb.append("0");
}
sb.append(str);
return sb.toString();
}
}