都是一些比较常用的日期工具类
public final class DateUtils {
/**
* 构造函数。
*/
private DateUtils() {
}
/**
* 取得AP系统时间。
*
* @return AP系统时间
*/
public static Date getSystemDate() {
return new Date();
}
/**
* 取得AP系统时间,不包括时分秒。
*
* @return AP系统时间
*/
public static Date getDate() {
Calendar calendar = getSystemCalendar();
calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DATE), 0, 0, 0);
return DateUtils.convertString2Date(DateUtils.convertDate2String(calendar.getTime(), "yyyyMMdd"),"yyyyMMdd");
}
/**
* 取得AP系统时间。
*
* @return AP系统时间
*/
public static Calendar getSystemCalendar() {
return Calendar.getInstance();
}
/**
* 系统日期的年月日时分秒毫秒的文字列,取得方法。
*
* @return 年月日时分秒毫秒的文字列
*/
public static String getTimeStamp() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
return sdf.format(getSystemDate());
}
/**
* 参数的字符串使用指定的格式转换日期型的方法。
*
* @param str 转换的对象
* @param pattern 日期时间格式的模式
* @return 参数null的时候返回null,字符串时按照指定的日期时间格式实行Date型转换
*/
public static Date convertString2Date(String str, String pattern) {
if (str == null || "".equals(str)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(str.trim()));
} catch (ParseException ex) {
throw new RuntimeException(ex);
}
return calendar.getTime();
}
/**
* 参数的日期型使用指定的格式转换字符串的方法。
*
* @param date 转换的对象
* @param pattern 日期时间格式的模式
* @return 参数null的时候返回null,字符串时按照指定的日期时间格式实行String型转换
*/
public static String convertDate2String(Date date, String pattern) {
if (date == null) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
return sdf.format(date);
}
/**
* 参数的日期被指定的日加算的方法。
*
* @param date 日期
* @param day 加算的日
* @return 加算后的日期
*/
public static Date addDay(Date date, int day) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
/**
* 参数的日期被指定的秒加算的方法。
*
* @param date 日期
* @param second 加算的秒
* @return 加算后的日期
*/
public static Date addSecond(Date date, int second) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.SECOND, second);
return calendar.getTime();
}
/**
* 参数的日期取得当月的首日
*
* @param date 日付
* @return 当月的首日
*/
public static Date getFirstDay(Date date) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
* 参数的日期取得当月的末日
*
* @param date 日付
* @return 当月的末日
*/
public static Date getLastDay(Date date) {
if (date == null) {
return null;
}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.set(Calendar.DATE, 1);
calendar.roll(Calendar.DATE, -1);
return calendar.getTime();
}
/**
* 字符串是否是正确日期格式的判定
*
* @param date 日期字符串
* @param pattern 日期时间格式的模式
* @return 字符是正确的日期格式 true
*/
public static boolean isValidDate(String date, String pattern) {
if (date == null) {
return false;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
sdf.setLenient(false);
sdf.parse(String.valueOf(date));
} catch (ParseException ex) {
return false;
}
return true;
}
/**
* 获取前后时间的日差的方法。
*
* @param stateDate 开始时间
* @param endDate 结束时间
* @return 前后时间的日差
*/
public static int dateDiff(Date stateDate, Date endDate) {
return (int) ((endDate.getTime() - stateDate.getTime()) / (1000 * 60 * 60 * 24));
}
/**
* 根据参数格式化日期方法。
*
* @param strDate 需要格式化的对象
* @param origPattern 变换元的日期格式化参数(例如:yyyy-MM-dd;yyyyMMddhhmmss等)
* @param destPattern 变化后的日期格式化参数(例如:yyyy-MM-dd;yyyyMMddhhmmss等)
* @return 参数origDate是null场合或异常的场合返回空串,否则返回格式化后的日期
*/
public static String formatDateTime(Object origDate, String origPattern, String destPattern) {
String formatDate = "";
String strDate = "";
if (origDate == null) {
return formatDate;
}
strDate = String.valueOf(origDate).trim();
if ("".equals(strDate) || "0".equals(strDate)) {
return formatDate;
}
SimpleDateFormat sdf = new SimpleDateFormat(origPattern);
Calendar calendar = Calendar.getInstance();
try {
calendar.setTime(sdf.parse(strDate));
sdf.applyPattern(destPattern);
formatDate = sdf.format(calendar.getTime());
} catch (ParseException ex) {
throw new RuntimeException(ex);
}
return formatDate;
}
}