public class DateUtil {
private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
/**
* 获取当前的系统时间
* @return 系统时间
*/
public static Date currentDate(){
return new Date();
}
/**
* 将 date 格式的字符串转换为一个日期对象
* @param dateStr date 格式的字符串
* @param pattern 日期字符串的格式
* @return 日期对象
*/
public static Date str2Date(String dateStr,String pattern) {
try {
SimpleDateFormat sf = new SimpleDateFormat(pattern);
return sf.parse(dateStr);
} catch (ParseException e) {
throw new RuntimeException("字符串转换日期出错,字符串:" + dateStr+",格式为:" + pattern,e);
}
}
/**
* 将 date 格式的字符串转换为一个日期对象
* 使用默认的格式: yyyy-MM-dd HH:mm:ss
* @param dateStr date 格式的字符串
* @return 日期对象
*/
public static Date str2Date(String dateStr) {
return str2Date(dateStr,DEFAULT_PATTERN);
}
/**
* 将日期转为字符串
* @param date 日期
* @param pattern 日期格式
* @return 转换后的字符串
*/
public static String date2String( Date date , String pattern){
SimpleDateFormat sf= new SimpleDateFormat(pattern);
return sf.format(date);
}
/**
* 将日期转为字符串
* 使用默认的格式: yyyy-MM-dd HH:mm:ss
* @param date 日期
* @return 转换后的字符串
*/
public static String date2String(Date date){
return date2String(date,DEFAULT_PATTERN);
}
/**
* 获取当前系统时间的下一天的日期
* @return 日期对象
*/
public static Date getNextDay(){
return getNextDay(currentDate(),1);
}
/**
* 获取特定日期的下一天
* @param oriDate 某个日期
* @return 下一天的日期
*/
public static Date getNextDay(Date oriDate){
return getNextDay(oriDate,1);
}
/**
* 获取指定日期的指定天数后的日期
* @param oriDate 原始日期
* @param amount 天数
* @return 新日期
*/
public static Date getNextDay(Date oriDate,int amount){
Calendar c = Calendar.getInstance();
c.setTime(oriDate);
c.add(Calendar.DAY_OF_MONTH,amount);
return c.getTime();
}
/**
* 获取当前系统日期的指定天数后的日期
* @param amount 天数
* @return 新日期
*/
public static Date getNextDay(int amount){
return getNextDay(currentDate(),amount);
}
/**
* 获取年份
* @param date 日期
* @return 年份
*/
public static Integer getYear(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.YEAR);
}
/**
* 获取月份
* @param date 日期
* @return 月份
*/
public static Integer getMonth(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MONTH) + 1;
}
/**
* 获取日期
* @param date 日期
* @return 日期
*/
public static Integer getDate(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.DAY_OF_MONTH);
}
/**
* 获取小时
* @param date 日期
* @return 小时
*/
public static Integer getHour(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.HOUR_OF_DAY);
}
/**
* 获取分钟
* @param date 日期
* @return 分钟
*/
public static Integer getMinute(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.MINUTE);
}
/**
* 获取秒数
* @param date 日期
* @return 秒数
*/
public static Integer getSecond(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
return c.get(Calendar.SECOND);
}
/**
* 获取两个日期相差的天数: 精确到秒
* @param startDate 起始日期 7.22 15
* @param endDate 终止日期 7.24 16
* @return 天数
*/
public static Integer getDurationWithSecond(Date startDate,Date endDate){
int duration = 0;
while (startDate.before(endDate)){
startDate = getNextDay(startDate);
duration++;
}
return duration;
}
/**
* 获取两个日期相差的天数: 精确到天
* @param startDate 起始日期 7.22 13
* @param endDate 终止日期 7.24 15
* @return 天数
*/
public static Integer getDurationWithDay(Date startDate,Date endDate){
Calendar start = Calendar.getInstance();
Calendar end = Calendar.getInstance();
clearTime(start);
clearTime(end);
return getDurationWithSecond(start.getTime(),end.getTime());
}
/**
* 获取一个日期
* @param year 年
* @param month 月
* @param day 日
* @return
*/
public static Date getDate(int year,int month,int day){
Calendar c = Calendar.getInstance();
c.set(year, month-1, day,0,0,0);
return c.getTime();
}
/**
* 获取一个日期
* @param year 年
* @param month 月
* @param day 日
* @param hour 时
* @param minute 分
* @param second 秒
* @return
*/
public static Date getDate(int year,int month,int day,int hour,int minute,int second){
Calendar c = Calendar.getInstance();
c.set(year, month-1, day, hour, minute, second);
return c.getTime();
}
private static void clearTime(Calendar calendar){
calendar.set(Calendar.HOUR,0);
calendar.set(Calendar.MINUTE,0);
calendar.set(Calendar.SECOND,0);
}
}