import org.apache.commons.lang3.StringUtils;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.Locale;/**
* <br> 日期格式处理工具类
**/
public class DateUtil {/**
* Utility classes should not have public constructors
*/
private DateUtil() {
}private static final DateTimeFormatter DATE_FOMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
private static final DateTimeFormatter YYYYMMDD = DateTimeFormatter.ofPattern("yyyy/MM/dd", Locale.CHINA);
/**
* <br> 计算当前日期之前多少天的日期
* @param days 天数
* @param dateFomat 日期格式
**/
public static synchronized String getBeforeCurrentDate(int days, DateTimeFormatter dateFomat) {
//获取当前日期
LocalDateTime localDateTime = LocalDateTime.now();
//获取当前日期之前N天的日期
LocalDateTime beforeDateTime = localDateTime.minusDays(days);
//将日期进行格式化
return beforeDateTime.format(dateFomat);
}
/**
* <br> 将日期转为日期字符串
* @param date 日期
* @param dateFormat 日期时间格式化
**/
public static String transDateToDateStr(Date date, DateTimeFormatter dateFormat) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).format(dateFormat);
}/**
* <br> 字符串转化成日期
* @param dateStr 日期字符串
* @param pattern 日期格式
**/
public static Date transDateStrToDate(String dateStr, String pattern) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
LocalDateTime localDateTime = LocalDateTime.parse(dateStr, dateTimeFormatter);
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
}
/**
* <br> 将日期转为日期字符串
* @param date 日期
**/
public static String transDateToDateStr(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).format(DATE_FOMAT);
}
/**
* <br> 将日期转为日期字符串YYYY/MM/dd
* @param date 日期
**/
public static String transDateToSimpleStr(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).format(YYYYMMDD);
}/**
* <br> 判断字符串是否为数字
* @param numericStr 数值类型字符串
**/
public static boolean isNumeric(String numericStr) {
boolean isNumeric = false;
if (StringUtils.isNotBlank(numericStr)) {
isNumeric = numericStr.matches("^[0-9]*$");
}
return isNumeric;
}}
日期数据转换字符串工具Java类分享
最新推荐文章于 2023-05-29 14:03:02 发布