public class DateUtil {
/**
* 一天的毫秒数
*/
public static final long ONE_DAY_MILLI = 24 * 60 * 60 * 1000L;
/**
* 一个月(31天)的毫秒数
*/
public static final long ONE_MONTH_MILLI = 31 * 24 * 60 * 60 * 1000L;
// 无符号日期长度
private static final int DATE_LENGTH = 8;
// 无符号时间长度
private static final int TIME_LENGTH = 6;
private DateUtil() {
}
/**
* 时间的各种格式器
*/
public static final String DATE_STYLE = "yyyy-MM-dd";
public static final String DATE_STYLE_EMPTY = "yyyyMMdd";
public static final String DATE_YM = "yyyy-MM";
public static final String DATE_TIME_STYLE = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_TIME_STYLE3 = "yyyyMMddHHmmss";
public static final String DATE_TIME_STYLE4 = "yyyyMMddHHmmssSSS";
public static final String DATE_TIME_STYLE5 = "HH:mm:ss";
public static final String DATE_TIME_STYLE6 = "HHmmss";
public static final String DATE_YEAR = "yyyy";
public static final String DATE_STYLE2 = "yyyy.MM.dd";
public static final String DATE_STYLE_SMS = "yyyy年MM月dd日";
public static final String DATE_STYLE_TIME_S = "yyyy-MM-dd HH:mm:ss.SSS";
public static final String DATE_STYLE_TIME_S2 = "yyyy.MM.dd HH:mm:ss";
public static final String TIME_STYLE = "HH:mm:ss";
public static final String TIME_STYLE2 = "HHmmss";
public static final String TIME_HH_MM_STYLE = "HH:mm";
public static synchronized String formatDate(Date date) {
if(date == null) {
return null;
}
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
String dateStr = SDF1.format(date);
return dateStr;
}
public static synchronized String formatYM(Date date) {
SimpleDateFormat SDF5 = new SimpleDateFormat(DATE_YM);
String ymStr;
ymStr = SDF5.format(date);
return ymStr;
}
public static synchronized String formatMonth(Date date) {
SimpleDateFormat SDF5 = new SimpleDateFormat(DATE_YM);
String dateStr;
dateStr = SDF5.format(date);
return dateStr;
}
/**
* 根据毫秒数获取日期字符串
*
* @param milliseconds
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static synchronized String formatDateTime(long milliseconds) {
SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE);
String dateStr;
dateStr = SDF2.format(new Date(milliseconds));
return dateStr;
}
public static synchronized String formatDateTime1(long milliseconds) {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
String dateStr;
dateStr = SDF1.format(new Date(milliseconds));
return dateStr;
}
/**
*
* 格式化日期为 yyyyMMdd
*
* @param date
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static synchronized String formatDateEmpty(Date date) {
SimpleDateFormat SDF_EMPTY = new SimpleDateFormat(DATE_STYLE_EMPTY);
String dateStr = SDF_EMPTY.format(date);
return dateStr;
}
/**
*
* 格式化时间为hhMMss
*
* @param date
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static synchronized String formatTimeEmpty(Date date) {
SimpleDateFormat SDF_EMPTY = new SimpleDateFormat(DATE_TIME_STYLE6);
String dateStr = SDF_EMPTY.format(date);
return dateStr;
}
public static synchronized Date parseToTime(String dateStr) {
SimpleDateFormat SDF6 = new SimpleDateFormat(DATE_TIME_STYLE5);
try {
Date date = SDF6.parse(dateStr);
return date;
} catch (ParseException e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_TIME_STYLE5 + "格式失败");
}
}
public static synchronized Date parseToTimeEmpty(String timeStr) {
SimpleDateFormat SDF7 = new SimpleDateFormat(DATE_TIME_STYLE6);
try {
Date date = SDF7.parse(timeStr);
return date;
} catch (ParseException e) {
throw new LswsException("参数:" + timeStr + "日期转到成" + DATE_TIME_STYLE6 + "格式失败");
}
}
public static String cutDate(String dateTime) {
StringBuilder sbr = new StringBuilder();
if (StringUtils.isNotBlank(dateTime) && 10 <= dateTime.length()) {
sbr.append(dateTime.substring(0, 4));
sbr.append(dateTime.substring(5, 7));
sbr.append(dateTime.substring(8, 10));
}
return sbr.toString();
}
public static String cutTime(String dateTime) {
StringBuilder sbr = new StringBuilder();
if (StringUtils.isNotBlank(dateTime) && 19 <= dateTime.length()) {
sbr.append(dateTime.substring(11, 13));
sbr.append(dateTime.substring(14, 16));
sbr.append(dateTime.substring(17, 19));
}
return sbr.toString();
}
public static String cutNoNum(String dateTime) {
StringBuilder sbr = new StringBuilder();
Pattern p = Pattern.compile("[^0-9]");
if (StringUtils.isNotBlank(dateTime)) {
Matcher m = p.matcher(dateTime);
sbr.append(m.replaceAll("").trim());
}
return sbr.toString();
}
public static String formatDate(String date) {
String newDate = date;
if (StringUtils.isNotBlank(date)) {
newDate = date.replaceAll("-", "");
}
return newDate;
}
public static String formatTime(String time) {
String newTime = time;
if (StringUtils.isNotBlank(time)) {
newTime = time.replaceAll(":", "");
}
return newTime;
}
public static synchronized String formatDateToRsf(Date date) {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
if (date == null) {
return null;
}
String dateStr;
dateStr = SDF1.format(date);
return dateStr;
}
/**
*
* Date转为 yyyy-MM-dd HH:mm:ss
*
* @param date
* @return String
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static synchronized String formatDateToString(Date date) {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_TIME_STYLE);
if (date == null) {
return null;
}
String dateStr;
dateStr = SDF1.format(date);
return dateStr;
}
/**
* 比较时间先后 如果 前面的时间比后面的大 返回true
*
* @param date1
* @param date2
* @return
*/
public static boolean compareDate(Date date1, Date date2) {
long dateNum1 = date1.getTime();
long dateNum2 = date2.getTime();
if (dateNum1 > dateNum2) {
return true;
}
return false;
}
/**
* 验证报文传过来 是不是yyyy-MM-dd格式
*/
public static boolean checkDate(String date) {
boolean flag = false;
if (StringUtils.isNotBlank(date)) {
String re = "^\\d{4}\\D+\\d{2}\\D+\\d{2}$";
Pattern pattern = Pattern.compile(re);
Matcher matcher = pattern.matcher(date);
if (matcher.matches()) {
flag = true;
}
}
return flag;
}
/**
* 验证报文传过来时间 是不是HH:mm:ss格式
*
* @param time
* @return
*/
public static boolean checkTime(String time) {
boolean flag = false;
if (StringUtils.isNotBlank(time)) {
String re = "^\\d{2}\\s*:\\s*\\d{2}\\s*:\\s*\\d{2}$";
Pattern pattern = Pattern.compile(re);
Matcher matcher = pattern.matcher(time);
if (matcher.matches()) {
flag = true;
}
}
return flag;
}
/**
* 功能描述: 转换为有符号日期<br>
*
* @param date 8位日期
* @return
*/
public static String convertDate(String date) {
if (StringUtils.isBlank(date)) {
return StringUtils.EMPTY;
}
if (DATE_LENGTH != date.length()) {
return date;
}
StringBuilder sb = new StringBuilder();
sb.append(date.substring(0, 4));
sb.append("-");
sb.append(date.substring(4, 6));
sb.append("-");
sb.append(date.substring(6, 8));
return sb.toString();
}
/**
* 功能描述: 转换为有符号时间<br>
*
* @param date 6位时间
* @return
*/
public static String convertTime(String time) {
if (StringUtils.isBlank(time)) {
return StringUtils.EMPTY;
}
if (TIME_LENGTH != time.length()) {
return time;
}
StringBuilder sb = new StringBuilder();
sb.append(time.substring(0, 2));
sb.append(":");
sb.append(time.substring(2, 4));
sb.append(":");
sb.append(time.substring(4, 6));
return sb.toString();
}
/**
* 取n之内的
*
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d, int day) {
Calendar now = Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
return now.getTime();
}
public static synchronized String formatSmsDate(Date date) {
SimpleDateFormat SDF_SMS = new SimpleDateFormat(DATE_STYLE_SMS);
String dateStr = SDF_SMS.format(date);
return dateStr;
}
public static synchronized String formatTimeStyle2(Date date) {
SimpleDateFormat SDF1 = new SimpleDateFormat(TIME_STYLE2);
String dateStr = SDF1.format(date);
return dateStr;
}
public static synchronized String formatDate2(Date date) {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE2);
String dateStr = SDF1.format(date);
return dateStr;
}
public static synchronized String formatDateStyleEmpty(Date date) {
if(ParamsUtil.isNullOrEmpty(date)){
return Constants.EMPTY;
}
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE_EMPTY);
String dateStr = SDF1.format(date);
return dateStr;
}
public static String formatPrintDate(Date date) {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
String dateStr = SDF1.format(date);
return dateStr;
}
public static String formatPrintDateTime(Date date) {
if(ParamsUtil.isNullOrEmpty(date)){
return Constants.EMPTY;
}
SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE);
String dateStr = SDF2.format(date);
return dateStr;
}
public static synchronized String formatDateTime(Date date) {
if(date == null) {
return Constants.EMPTY;
}
String dateStr;
SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE);
dateStr = SDF2.format(date);
return dateStr;
}
public static synchronized String formatDateTime2(Date date) {
if(date == null) {
return Constants.EMPTY;
}
String dateStr;
SimpleDateFormat SDF3 = new SimpleDateFormat(DATE_TIME_STYLE3);
dateStr = SDF3.format(date);
return dateStr;
}
public static synchronized String formatTime(Date date) {
SimpleDateFormat SDF_TIME = new SimpleDateFormat(TIME_STYLE);
String dateStr = SDF_TIME.format(date);
return dateStr;
}
public static synchronized Date parseTime(String dateStr) {
SimpleDateFormat SDF_TIME = new SimpleDateFormat(TIME_STYLE);
try {
Date date = SDF_TIME.parse(dateStr);
return date;
} catch (ParseException e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_STYLE + "格式失败",e);
}
}
public static synchronized Date parseTime(String timeStr,String timeStyle) {
SimpleDateFormat SDF_TIME = new SimpleDateFormat(timeStyle);
try {
Date date = SDF_TIME.parse(timeStr);
return date;
} catch (ParseException e) {
throw new LswsException("参数:" + timeStr + "日期转到成" + timeStyle + "格式失败",e);
}
}
public static synchronized Date parseToDate(String dateStr) {
try {
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
Date date = SDF1.parse(dateStr);
return date;
} catch (Exception e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_STYLE + "格式失败",e);
}
}
public static synchronized Date parseToDate(String dateStr,String format) {
try {
SimpleDateFormat SDF1 = new SimpleDateFormat(format);
Date date = SDF1.parse(dateStr);
return date;
} catch (Exception e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_STYLE + "格式失败",e);
}
}
public static synchronized Date parseToDateEmpty(String dateStr) {
try {
if(StringUtils.isBlank(dateStr)) {
return null;
}
SimpleDateFormat SDF_EMPTY = new SimpleDateFormat(DATE_STYLE_EMPTY);
Date date = SDF_EMPTY.parse(dateStr);
return date;
} catch (Exception e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_STYLE_EMPTY + "格式失败",e);
}
}
public static synchronized Date parseToDateTime(String dateStr) {
try {
if(StringUtils.isBlank(dateStr)) {
return null;
}
SimpleDateFormat SDF2 = new SimpleDateFormat(DATE_TIME_STYLE);
Date date = SDF2.parse(dateStr);
return date;
} catch (Exception e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_TIME_STYLE + "格式失败",e);
}
}
public static synchronized Timestamp parseToTimeStamp(String dateStr) {
String dt = dateStr.replaceAll("-", "").replaceAll(" ", "").replace(":", "");
int yeardt = Integer.parseInt(dt.substring(0, 4));
int monthdt = Integer.parseInt(dt.substring(4, 6));
int daydt = Integer.parseInt(dt.substring(6, 8));
int hourOfDay = Integer.parseInt(dt.substring(8, 10));
int minute = Integer.parseInt(dt.substring(10, 12));
int second = Integer.parseInt(dt.substring(12, 14));
GregorianCalendar calendardt = new GregorianCalendar(yeardt, monthdt - 1, daydt, hourOfDay, minute, second);
long time = calendardt.getTime().getTime();
return new Timestamp(time);
}
public static synchronized Date parseToDateTime2(String dateStr) {
try {
SimpleDateFormat SDF3 = new SimpleDateFormat(DATE_TIME_STYLE3);
Date date = SDF3.parse(dateStr);
return date;
} catch (Exception e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + DATE_TIME_STYLE3 + "格式失败",e);
}
}
// 生成17位编码
public static synchronized String formatDateToLongChar(Date date) {
SimpleDateFormat SDF4 = new SimpleDateFormat(DATE_TIME_STYLE4);
String dateStr = SDF4.format(date);
return dateStr;
}
/**
* 转换时间的格式yyyy-MM-dd HH:mm:ss到yyyyMMddHHmmss
*
* @param date
* @return
* @throws Exception
*/
public static String convertToDateStr(String date) {
StringBuilder sbr = new StringBuilder();
sbr.append(date.substring(0, 4));
sbr.append(date.substring(5, 7));
sbr.append(date.substring(8, 10));
sbr.append(date.substring(11, 13));
sbr.append(date.substring(14, 16));
sbr.append(date.substring(17, 19));
return sbr.toString();
}
/**
* 判断当前时间是否在早8点到晚8点之间
*/
public static boolean compareHourIn8to20() {
Calendar rightNow = Calendar.getInstance();
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
if (hour > 7 && hour < 20) {
return true;
}
return false;
}
/**
* 判断当前时间加上时间间隔是否在早8点到晚8点之间
*
* @param hourP
* @param minuteP
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static boolean compareHourIn8to20(int hourP, int minuteP) {
Calendar rightNow = Calendar.getInstance();
rightNow.set(Calendar.HOUR_OF_DAY, hourP);
rightNow.set(Calendar.MINUTE, minuteP);
int hour = rightNow.get(Calendar.HOUR_OF_DAY);
if (hour > 7 && hour < 20) {
return true;
}
return false;
}
/**
* 判断查询条件(预约作业时间)是否在 当前时间加上最大时date内, ture:在时间范围内 false:在最大上限之外
*
* @param srvTimeStart
* @param srvTimeEnd
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static boolean compareDate(String srvTimeStart, String srvTimeEnd) {
if (ParamsUtil.isNullOrEmpty(srvTimeStart) || ParamsUtil.isNullOrEmpty(srvTimeEnd)) {
return false;
}
Calendar rightNow = Calendar.getInstance();
rightNow.add(Calendar.DATE, 3);
long rightNowTime = rightNow.getTime().getTime();
String dt = srvTimeStart.replaceAll("-", "");
String df = srvTimeEnd.replaceAll("-", "");
int yeardt = Integer.parseInt(dt.substring(0, 4));
int monthdt = Integer.parseInt(dt.substring(4, 6));
int daydt = Integer.parseInt(dt.substring(6, 8));
int yeardf = Integer.parseInt(df.substring(0, 4));
int monthdf = Integer.parseInt(df.substring(4, 6));
int daydf = Integer.parseInt(df.substring(6, 8));
GregorianCalendar calendardt = new GregorianCalendar(yeardt, monthdt - 1, daydt);
GregorianCalendar calendardf = new GregorianCalendar(yeardf, monthdf - 1, daydf);
long dateToTime = calendardt.getTime().getTime();
long dateFromTime = calendardf.getTime().getTime();
if (dateFromTime <= rightNowTime && dateToTime <= rightNowTime) {
return true;
}
return false;
}
/**
*
* 功能描述: <br>
* 输入日期与当前时间比较 如果早于当前时间 返回 true; 如果晚于当前时间 返回false
*
* @param dateTime
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static boolean compareDateWhitCurrentTime(Date dateTime) {
if (ParamsUtil.isNullOrEmpty(dateTime)) {
return false;
}
long rightNowTime = parseToDate(formatDate(currentDate())).getTime();
long dateToTime = dateTime.getTime();
if (dateToTime < rightNowTime) {
return true;
}
return false;
}
/**
*
* 功能描述: <br>
* 〈根据输入的日期计算出新时间〉
*
* @param days 时间日期
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static String computeDate(int days) {
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_YEAR, days);
long date = cal.getTimeInMillis();
SimpleDateFormat SDF1 = new SimpleDateFormat(DATE_STYLE);
return SDF1.format(new Date(date));
}
/**
* 取当前时间
*
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Timestamp currentTimestamp() {
return new Timestamp(System.currentTimeMillis());
}
/**
* 取当前时间
*
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static java.sql.Date currentSqlDate() {
return new java.sql.Date(System.currentTimeMillis());
}
/**
* 取当前时间
*
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date currentDate() {
return new Date(System.currentTimeMillis());
}
/**
* 解析时间
*
* @param dateStr
* @param formatStyle
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date parseDate(String dateStr, String formatStyle) {
if (StringUtils.isBlank(dateStr)) {
return null;
}
if (StringUtils.isBlank(formatStyle)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(formatStyle);
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
throw new LswsException("参数:" + dateStr + "格式失败",e);
}
}
/**
* 解析
*
* @param dateStr
* @param formatStyle
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Timestamp parseTimestamp(String dateStr, String formatStyle) {
if (StringUtils.isBlank(dateStr)) {
return null;
}
if (StringUtils.isBlank(formatStyle)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(formatStyle);
try {
return new Timestamp(sdf.parse(dateStr).getTime());
} catch (ParseException e) {
throw new LswsException("参数:" + dateStr + "日期转到成" + "格式失败",e);
}
}
/**
* 计算两个日期之间相差的天数
*
* @param smdate 较小的时间
* @param bdate 较大的时间
* @return 相差天数
* @throws ParseException
*/
public static int daysBetween(Date smdate, Date bdate) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse(sdf.format(smdate));
Date date2 = sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
long time1 = cal.getTimeInMillis();
cal.setTime(date2);
long time2 = cal.getTimeInMillis();
long between_days = (time2 - time1) / (1000 * 3600 * 24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
* 在给定时间上加时间
*
* @param date
* @param addType
* @param count
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date addDate(Date date, int addType, int count) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(addType, count);
return calendar.getTime();
}
/**
*
* 功能描述: <br>
* 计算当前日期 上一个月第一天日期 yyyy-mm-dd
*
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date getLastMonthFirstDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
// 获取前一个月 月份
int month = calendar.get(Calendar.MONTH) - 1;
// 设置新月份
calendar.set(Calendar.MONTH, month);
// 设置该月份第一天
calendar.set(Calendar.DAY_OF_MONTH, 1);
return calendar.getTime();
}
/**
*
* 功能描述: <br>
* 计算当前日期 上一个月第一天日期 yyyy-mm-dd
*
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date getLastMonthEndDate() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(new Date());
// 获取前一个月 月份
int month = calendar.get(Calendar.MONTH);
// 设置新月份
calendar.set(Calendar.MONTH, month);
// 设置该月份最后一天
calendar.set(Calendar.DAY_OF_MONTH, 0);
return calendar.getTime();
}
/**
* 解析时间
*
* @param date
* @param formatStyle
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static String formatDate(Date date, String formatStyle) {
if (date == null) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(formatStyle);
return sdf.format(date);
}
/**
* 解析时间
*
* @param formatStyle
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static String currDateStr(String formatStyle) {
SimpleDateFormat sdf = new SimpleDateFormat(formatStyle);
return sdf.format(DateUtil.currentDate());
}
/**
*
* 功能描述: <br>
* 获取范围内所有日期
*
* @param dBegin
* @param dEnd
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static List<String> findDates(String dBegin, String dEnd) {
List<String> lDate = new ArrayList<String>();
Calendar calBegin = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calBegin.setTime(parseToDate(dBegin));
Calendar calEnd = Calendar.getInstance();
// 使用给定的 Date 设置此 Calendar 的时间
calEnd.setTime(parseToDate(dEnd));
// 测试此日期是否在指定日期之后
while (parseToDate(dEnd).after(calBegin.getTime())) {
lDate.add(formatDate2(calBegin.getTime()));
calBegin.add(Calendar.DAY_OF_MONTH, 1);
}
lDate.add(formatDate2(parseToDate(dEnd)));
return lDate;
}
/**
* 加小时
*
* @param date
* @param amount
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static String addHore(int amount) {
Calendar c = Calendar.getInstance();
c.setTime(DateUtil.currentDate());
c.add(Calendar.HOUR, amount);
return DateUtil.formatDate(c.getTime(), DateUtil.TIME_HH_MM_STYLE);
}
/**
* 加天
*
* @param date
* @param amount
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static String addDay(Date date, int amount) {
Calendar c = Calendar.getInstance();
c.setTime(date);
c.add(Calendar.DAY_OF_MONTH, amount);
return DateUtil.formatDate(c.getTime());
}
/**
* 冗余解析<br/>
* 先当解析 yyyy-MM-dd 再当解析yyyyMMdd
*
* @param date
* @return
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public static Date parseDate(String date) {
if(StringUtils.isBlank(date)) {
return null;
}
String[] formats = new String[] {DATE_STYLE, DATE_STYLE_EMPTY};
Date value = null;
boolean pass = true;
for(int i = 0; pass && i < formats.length; i ++) {
SimpleDateFormat sdf = new SimpleDateFormat(formats[i]);
try {
value = sdf.parse(date);
pass = false;
} catch (Exception e) {
throw new LswsException("转换失败{}",e);
}
}
return value;
}
}