封装 时间工具类
作者:互联网
前言
工作开发中对时间类型 Date 和 LocalDateTime 时间类型处理蛮多的,所以自己封装了一个工具类
目录:
- Date类型的str 转 时间戳
- Date转string 字符
- LocalDate 转 string
- String转 LocalDate
- String 转 Date
- 时间戳转 Date 类型
- 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
- 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
- string转date加日期
- 某个时间往后推迟 num 日/月/年
- LocalDateTime 转为string
- LocalDateTime 转 Date
public class DateTimeUtil {
public static final String DEFAULT_FORMAT_DATE = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_YMD = "yyyyMMdd";
public static final String FORMAT_YMDHM = "yyyyMMddHHmm";
public static final String DATE_FORMAT = "yyyy-MM-dd";
public static final String FORMAT_YMDHMS = "yyyyMMddHHmmss";
/**
* Date类型的str 转 时间戳
* @param format "yyyy-MM-dd HH:mm:ss:SSS"或"yyyy-MM-dd HH:mm:ss"。
* @return 返回文本信息的日期对应的格林威治标准时间(1970年1月1日00:00:00.000)的偏移量,单位是毫秒。 1秒=1000毫秒。
*/
public static long dateTimeParse(String datetime, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
Date date = sdf.parse(datetime);
return date.getTime();
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
return 0;
}
/**
* Date转string 字符串
*
* @param date Date
* @param formatStr 格式
* @return
*/
public static String formatDateToString(Date date, String formatStr) {
return (new SimpleDateFormat((formatStr == null ? DEFAULT_FORMAT_DATE : formatStr))).format(date);
}
/**
* localDate 转 string
*
* @param date
* @param formatStr
* @return
*/
public static String formatLocalDateToString(LocalDate date, String formatStr) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(formatStr == null ? "yyyy-MM-dd" : formatStr);
return date.format(fmt);
}
/**
* String 转 LocalDate
*
* @param dateStr
* @param formatStr
* @return
*/
public static LocalDate formatStringToLocalDate(String dateStr, String formatStr) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern(formatStr == null ? "yyyy-MM-dd" : formatStr);
return LocalDate.parse(dateStr, fmt);
}
/**
* String 转 Date
*
* @param dateStr 时间字符串
* @param formatStr 格式
* @return
*/
public static Date formatStringToDate(String dateStr, String formatStr) throws ParseException {
return (new SimpleDateFormat((formatStr == null ? DEFAULT_FORMAT_DATE
: formatStr))).parse(dateStr);
}
/**
* 时间戳转 Date 类型: 1631513214500
*
* @param time
* @return
*/
public static Date stringStamp2Date(String time) {
Long longTime = Long.valueOf(time);
Date date = new Date(longTime);
return date;
}
/**
* 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
*
* @param beginTime
* @param endTime
* @return
*/
public static boolean beginTimeisBeforeEndTime(String beginTime, String endTime) {
long begin = dateTimeParse(beginTime, DEFAULT_FORMAT_DATE);
long end = dateTimeParse(endTime, DEFAULT_FORMAT_DATE);
return end > begin;
}
public static boolean beginTimeisBeforeEndTime(Date beginTime, Date endTime) {
long begin = beginTime.getTime();
long end = endTime.getTime();
return end > begin;
}
/**
* 比较两个时间,如果endtime晚于begintime,则返回true,否则返回false
*
* @param beginTime
* @param endTime
* @return
*/
public static boolean beginTimeBeforeEndTime(LocalDateTime beginTime, LocalDateTime endTime) {
return beginTime.isBefore(endTime);
}
/**
* string转date加日期
*
* @param dateStr 时间字符串
* @param daynum 天数
* @return
*/
public static Date formatStringToDateAddDay(String dateStr, Integer daynum) throws ParseException {
if (dateStr.length() <= SystemConstants.DATE_LENGTH) {
dateStr = dateStr + " 00:00:00";
} else {
return (new SimpleDateFormat(DEFAULT_FORMAT_DATE)).parse(dateStr);
}
SimpleDateFormat sdf = new SimpleDateFormat(DEFAULT_FORMAT_DATE);
Calendar calendar = new GregorianCalendar();
Date date = sdf.parse(dateStr);
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, daynum);
return calendar.getTime();
}
/**
* 时间往后推迟 num 日/月/年
*
* @param dateStr 时间
* @param num 数量
* @param type 1:日 2:月 3:年
* @return
*/
public static Date dateDelayDayOrMonthOrYear(Date dateStr, Integer num, Integer type) {
Calendar calendar = new GregorianCalendar();
Date date = dateStr;
calendar.setTime(date);
switch (type) {
case 1:
calendar.add(Calendar.DATE, num);
break;
case 2:
calendar.add(Calendar.MONTH, num);
break;
case 3:
calendar.add(Calendar.YEAR, num);
break;
}
return calendar.getTime();
}
/**
* 字符串日志转为LocalDateTime格式
* 不传或者无法转换时返回当前时间
*
* @param dateStr 日期字符串
* @return
*/
public static LocalDateTime strToLocalDateTime(String dateStr) {
if (StringUtils.isBlank(dateStr)) {
return LocalDateTime.now();
}
try {
return LocalDateTime.parse(dateStr, DateTimeFormatter.ofPattern(DEFAULT_FORMAT_DATE));
} catch (Exception ignored) {
}
return LocalDateTime.now();
}
/**
* LocalDateTime 转为string
*
* @param time
* @return
*/
public static String localDateTimeToStr(LocalDateTime time) {
if (time == null) {
return null;
}
try {
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
return df.format(time);
} catch (Exception ignored) {
}
return null;
}
/**
* LocalDateTime 转 Date
*
* @param time
* @return
*/
public static Date localDateTimeToDate(LocalDateTime time) {
Date date = null;
if (time != null) {
String localTimeStr = localDateTimeToStr(time);
try {
date = formatStringToDate(localTimeStr, "yyyy-MM-dd HH:mm:ss");
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}
}
标签:return,String,param,时间,dateStr,Date,封装,工具,public 来源: https://blog.csdn.net/weixin_43582499/article/details/120649083