Java时间工具类
/**
* 日期转字符串默认 "yyyy-MM-dd"
* @param date
* @return
*/
public static String formatDate(Date date){
return new SimpleDateFormat(DateEnum.FORMATTERS).format(date);
}
/**
* 串日期转字符
* @param date 要转换的日期
* @param format 转换格式
* @return
*/
public static String formatDate(Date date, String format){
return new SimpleDateFormat(format).format(date);
}
/**
* 时间戳转字符串
* @param format 转换的格式
* @param stamp 时间戳
* @return
*/
public static String formatDate(DateEnum format,Long stamp){
return new SimpleDateFormat(format.toString()).format(stamp);
}
/**
* 时间戳转时间
* @param format
* @param stamp
* @return
*/
public static Date formatStamp(DateEnum format,Long stamp) throws ParseException {
return new SimpleDateFormat(format.toString()).parse(stamp.toString());
}
/**
* 字符串转日期
* @param strDate
* @param pattern
* @return
*/
public static Date parseDate(String strDate,DateEnum pattern) throws ParseException {
return new SimpleDateFormat(pattern.toString()).parse(strDate);
}
/**
* 获取两者之间最大或最小时间
* @param startTime 时间
* @param endTime 时间
* @param flag false:获取最小时间 true:获取最大时间
* @return
*/
public static Date betweenDate(Date startTime,Date endTime,Boolean flag){
if(flag){
return startTime.before(endTime)?endTime:startTime;
}
return startTime.before(endTime)?startTime:endTime;
}
/**
* 字符串获取两者之间最大或最小时间
* @param startTime 时间
* @param endTime 时间
* @param flag false:获取最小时间 true:获取最大时间
* @return
*/
public static String betweenDate(String startTime,String endTime,Boolean flag) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateEnum.FORMATTERS);
Date one = simpleDateFormat.parse(startTime);
Date two = simpleDateFormat.parse(endTime);
if(flag){
return one.before(two)?endTime:startTime;
}
return one.before(two)?startTime:endTime;
}
/**
* 字符串时间 获取两个时间差的天数、小时、秒
* @param oneDate 第一个时间
* @param twoDate 第二个时间
* @param typeNum 0-天 1-时 2-秒
* @return
*/
public static long timeDifference(String oneDate , String twoDate , DateEnum typeNum) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DateEnum.FORMATTERS);
Date one = simpleDateFormat.parse(oneDate);
Date two = simpleDateFormat.parse(twoDate);
long day = 0;
switch (typeNum){
case DAY:
day =one.getTime() - two.getTime() > 0
? (one.getTime() - two.getTime()) / (1000 * 60 * 60 * 24)
: (two.getTime() - one.getTime()) / (1000 * 60 * 60 * 24) ;
break;
case HOURS:
day =one.getTime() - two.getTime() > 0
? (one.getTime() - two.getTime()) / (1000 * 60 * 60)
: (two.getTime() - one.getTime()) / (1000 * 60 * 60 ) ;
break;
case SECONDS:
day =one.getTime() - two.getTime() > 0
? (one.getTime() - two.getTime()) / 1000
: (two.getTime() - one.getTime()) / 1000 ;
break;
default:
day =one.getTime() - two.getTime() > 0
? (one.getTime() - two.getTime()) / (1000 * 60 * 60 * 24 * 12)
: (two.getTime() - one.getTime()) / (1000 * 60 * 60 * 24 * 12) ;
break;
}
return day;
}
DateEnum
public enum DateEnum {
YEAR,
DAY,
HOURS,
SECONDS;
public final static String FORMATTERS = "yyyy-MM-dd";
public final static String FORMATTERE = "yyyy/MM/dd";
public final static String FORMATTHOURS = "yyyy-MM-dd hh:mm:ss";
}