版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wanghang88/article/details/79877902
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import org.apache.commons.codec.binary.StringUtils;
import org.apache.xmlbeans.impl.regex.ParseException;
/**
* @author wanghang
* @Description 时间工具类
* @date: 2018/04/28 16:52
*/
public class DateUtil {
/**
* 国际化时间格式 2017-11-7T17:02:07+08:00
*/
private static final String YMDHMSXXX = "yyyy-MM-dd'T'HH:mm:ssXXX";
/**
* yyyy-MM-dd HH:mm:ss
*/
private static final String YMDHMS = "yyyy-MM-dd HH:mm:ss";
/**
* dd-MM-yyyy
*/
private static final String DMY = "dd-MM-yyyy";
/**
* MM-dd-yyyy
*/
private static final String MDY = "MM-dd-yyyy";
/**
* dd-MM-yyyy HH:mm
*/
private static final String DMYHM = "dd-MM-yyyy HH:mm";
/**
* 时间格式化
* @param date
* @param formatPattern
* @return java.lang.String
* @Date 2018/04/28
*/
public static String format(Date date, String formatPattern) {
if (date == null) {
return "";
}
SimpleDateFormat f = new SimpleDateFormat(formatPattern);
return f.format(date);
}
/**
* 日期格式字符转成日期
* @param date
* @param formatPattern
* @return java.util.Date
* @Date: 2018/04/28
*/
public static Date parse(String date, String formatPattern) throws ParseException {
if (StringUtils.isBlank(date)) {
return null;
}
SimpleDateFormat f = new SimpleDateFormat(formatPattern);
return f.parse(date);
}
/**
* 当前时间+day,指定hour,分秒置为零
* @param day
* @param hour
* @return
*/
public static Date addDay(int day, int hour) {
// 取时间
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, day);
return calendar.getTime();
}
/**
* 当前时间+day,时分秒置为零
* @param day
* @return
*/
public static Date addDay(int day) {
// 取时间
Date date = new Date();
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, day);// 把日期往后增加一天.整数往后推,负数往前移动
// 这个时间就是日期往后推一天的结果
return calendar.getTime();
}
/**
* 指定时间+day 时分秒置为零
* @param day
* @param date
* @return
*/
public static Date addDay(int day, Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.add(Calendar.DATE, day);// 把日期往后增加一天.整数往后推,负数往前移动
// 这个时间就是日期往后推一天的结果
return calendar.getTime();
}
/**
* 指定时间+day 时分秒不变
* @param day
* @param date
* @return
*/
public static Date addDay2(int day, Date date) {
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.add(Calendar.DATE, day);// 把日期往后增加一天.整数往后推,负数往前移动
// 这个时间就是日期往后推一天的结果
return calendar.getTime();
}
/**
* 描述:获取传入日期所在天的最后一秒
* 比如,传入当天的最后一秒是:2018-04-10 23:59:59
* @param Date
*/
public static Date getLastDate(Date date) {
Calendar para = Calendar.getInstance(java.util.Locale.CHINA);
para.setTime(date);
para.set(Calendar.HOUR_OF_DAY, 23);
para.set(Calendar.MINUTE, 59);
para.set(Calendar.SECOND, 59);
return para.getTime();
}
/**
* 获得传入时间所在月最后一天的的最后一秒
* @param date
* @return
*/
public static Date getLastDateTimeOfMonth(Date date){
Calendar c = Calendar.getInstance();
c.setTime(date);
c.set(Calendar.DAY_OF_MONTH, c.getActualMaximum(Calendar.DAY_OF_MONTH));
c.set(Calendar.HOUR_OF_DAY, c.getActualMaximum(Calendar.HOUR_OF_DAY));
c.set(Calendar.MINUTE, c.getActualMaximum(Calendar.MINUTE));
c.set(Calendar.SECOND, c.getActualMaximum(Calendar.SECOND));
return c.getTime();
}
}