java日期操作工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.*;
/**
* 日期时间操作工具类
*/
public class DateUtil {
private static Logger log = LoggerFactory.getLogger(DateUtil.class);
public static final String PATTERN_YM = "yyyy-MM"; // pattern_ym
public static final int PATTERN_YM_LENGTH = 7;
public static final String PATTERN_YMD = "yyyy-MM-dd"; // pattern_ymd
public static final int PATTERN_YMD_LENGTH = 10;
public static final String PATTERN_YMD_HM = "yyyy-MM-dd HH:mm"; // pattern_ymd hm
public static final int PATTERN_YMD_HM_LENGTH = 16;
public static final String PATTERN_YMD_HMS = "yyyy-MM-dd HH:mm:ss"; // pattern_ymd time
public static final int PATTERN_YMD_HMS_LENGTH = 19;
public static final String PATTERN_YMD_HMS_S = "yyyy-MM-dd HH:mm:ss:SSS"; // pattern_ymd timeMillisecond
public static final int PATTERN_YMD_HMS_S_LENGTH = 23;
public static final SimpleDateFormat shortSdf = new SimpleDateFormat("yyyy-MM-dd");
public static final SimpleDateFormat longSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 返回年份
*
* @param date 日期
* @return 返回年份
*/
public static int getYear(Date date) {
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR);
}
/**
* 格式化
*
* @param date
* @param pattern
* @return
*/
public static String format(Date date, String pattern) {
DateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}
/**
* 格式化
*
* @param date
* @param pattern
* @param timeZone
* @return
*/
public static String format(Date date, String pattern, TimeZone timeZone) {
DateFormat format = new SimpleDateFormat(pattern);
format.setTimeZone(timeZone);
return format.format(date);
}
/**
* 格式化
*
* @param date
* @param parsePattern
* @param returnPattern
* @return
*/
public static String format(String date, String parsePattern, String returnPattern) {
return format(parse(date, parsePattern), returnPattern);
}
/**
* 格式化
*
* @param date
* @param parsePattern
* @param returnPattern
* @param timeZone
* @return
*/
public static String format(String date, String parsePattern, String returnPattern, TimeZone timeZone) {
return format(parse(date, parsePattern), returnPattern, timeZone);
}
/**
* 解析
*
* @param date
* @param pattern
* @return
*/
public static Date parse(String date, String pattern) {
SimpleDateFormat format = new SimpleDateFormat(pattern);
try {
return format.parse(date);
} catch (ParseException e) {
log.error("DateUtil.parse异常:date值" + date + ",pattern值" + pattern);
return null;
}
}
/**
* 解析
*
* @param date
* @return
*/
public static Date parse(String date) {
return parse(date, PATTERN_YMD_HMS);
}
/**
* 解析
*
* @param date
* @return
*/
public static Date parseYearAndDay(String date) {
return parse(date, PATTERN_YMD);
}
/**
* 两个日期的时间差,返回"X天X小时X分X秒"
*
* @param start
* @param end
* @return
*/
public static String getBetween(Date start, Date end) {
long between = (end.getTime() - start.getTime()) / 1000;// 除以1000是为了转换成秒
long day = between / (24 * 3600);
long hour = between % (24 * 3600) / 3600;
long minute = between % 3600 / 60;
long second = between % 60 / 60;
String sb = day + "天" + hour + "小时" + minute + "分";//second + "秒";
return sb;
}
/**
* 返回两个日期之间隔了多少秒
*
* @param start
* @param end
* @return
*/
public static int getDateSecondSpace(Date start, Date end) {
return (int) ((end.getTime() - start.getTime()) / (1000));
}