基于LocalDateTime 实现的日期解析工具类
2020-09-27 本文已影响0人
码而优则仕
package cn.com.yuns.deploy.utils;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
/**
* @author wsq
* @version BaseLocalDateFormatUtils.java 2020/8/27 上午9:32 下午
*/
public class BaseLocalDateFormatUtils {
/**
* Date转LocalDateTime
*
* @param date Date
* @return LocalDateTime
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
try {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
return instant.atZone(zoneId).toLocalDateTime();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* LocalDateTime转Date
*
* @param localDateTime LocalDateTime
* @return Date
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
try {
ZoneId zoneId = ZoneId.systemDefault();
ZonedDateTime zdt = localDateTime.atZone(zoneId);
return Date.from(zdt.toInstant());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
package cn.com.yuns.deploy.utils;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class LocalDateTimeUtils extends BaseLocalDateFormatUtils implements
DatePattern {
private LocalDateTimeUtils() {
}
/**
* 解析yyyy-MM-dd'T'HH:mm:ss.SSSZ
*
* @param date
* @return
*/
public static Date getByFullStringTimeZone(String date) {
return safeParse(date, FULL_FORMAT_WITH_TIMEZONE);
}
/**
* 解析yyyy
*
* @param date
* @return
*/
public static Date getByYearOnlyString(String date) {
return safeParse(date, YEAR_ONLY_FORMAT);
}
/**
* 解析yyyy-MM
*
* @param date
* @return
*/
public static Date getByMonthOnlyString(String date) {
return safeParse(date, MONTH_ONLY_FORMAT);
}
/**
* 解析yyyyMM
*
* @param date
* @return
*/
public static Date getByMothAndYear(String date) {
return safeParse(date, COMPACT_MONTH_ONLY);
}
/**
* 解析yyyyMM
*
* @param date
* @return
*/
public static Date getByCompactMonthOnlyString(String date) {
return safeParse(date, COMPACT_MONTH_ONLY);
}
/**
* 解析yyyy-MM-dd
*
* @param date
* @return
*/
public static Date getByDateOnlyString(String date) {
return safeParse(date, DATE_ONLY_FORMAT);
}
/**
* 解析yyyy-MM-dd HH:mm:ss
*
* @param date
* @return
*/
public static Date getByFullString(String date) {
return safeParse(date, FULL_FORMAT);
}
/**
* 解析yyyy-MM-dd HH:mm
*
* @param date
* @return
*/
public static Date getByMinutesOnly(String date) {
return safeParse(date, MINUTES_ONLY_FORMAT);
}
/**
* 解析yyyyMMddHHmmss
*
* @param date
* @return
*/
public static Date getByCompactionFullString(String date) {
return safeParse(date, DATE_COMPACTION_FULL_FORMAT);
}
/**
* 解析yyyy年MM月dd日
*
* @param date
* @return
*/
public static Date getByChineseDateOnlyString(String date) {
return safeParse(date, CHINESE_DATE_ONLY_FORMAT);
}
/**
* 解析yyyy年MM月dd日 HH时mm分ss秒
*
* @param date
* @return
*/
public static Date getByChineseFullString(String date) {
return safeParse(date, CHINESE_FULL_FORMAT);
}
/**
* 解析
*
* @param date 日期
* @param pattern 格式
* @return
*/
private static Date safeParse(String date, String pattern) {
if (date == null || pattern == null) {
return null;
}
LocalDateTime localDateTime = LocalDateTime.parse(date, DateTimeFormatter.ofPattern(pattern));
return localDateTimeToDate(localDateTime);
}
public static void main(String args[]) {
System.out.println(getByChineseFullString("2020年08月27日 21时41分53秒"));
}
}