143 lines
4.7 KiB
Java
143 lines
4.7 KiB
Java
package com.whdc.common.utils;
|
||
|
||
import java.text.ParseException;
|
||
import java.text.SimpleDateFormat;
|
||
import java.time.LocalDateTime;
|
||
import java.time.format.DateTimeFormatter;
|
||
import java.util.*;
|
||
|
||
/**
|
||
* @author 李赛
|
||
* @date 2022-06-26 1:01
|
||
*/
|
||
public class DateUtils {
|
||
/**
|
||
* 时间格式(yyyy-MM-dd HH:mm:ss)
|
||
*/
|
||
public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
|
||
public final static String DATE_PATTERN = "yyyy年MM月dd日";
|
||
public final static String DATE_PATTERN1 = "yyyy-MM-dd";
|
||
public final static String DATE_PATTERN_HM = "HH:mm";
|
||
|
||
|
||
public static final ThreadLocal<SimpleDateFormat> sdfhmsS = new ThreadLocal<SimpleDateFormat>() {
|
||
protected SimpleDateFormat initialValue() {
|
||
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||
}
|
||
};
|
||
|
||
public static final ThreadLocal<SimpleDateFormat> sdfYMDh = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm"));
|
||
|
||
public static final ThreadLocal<SimpleDateFormat> sdfhms = new ThreadLocal<SimpleDateFormat>() {
|
||
protected SimpleDateFormat initialValue() {
|
||
return new SimpleDateFormat(DATE_TIME_PATTERN);
|
||
}
|
||
};
|
||
public static final ThreadLocal<SimpleDateFormat> sdfymd = new ThreadLocal<SimpleDateFormat>() {
|
||
protected SimpleDateFormat initialValue() {
|
||
return new SimpleDateFormat(DATE_PATTERN);
|
||
}
|
||
};
|
||
public static final ThreadLocal<SimpleDateFormat> sdf_utc = new ThreadLocal<SimpleDateFormat>() {
|
||
protected SimpleDateFormat initialValue() {
|
||
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
|
||
}
|
||
};
|
||
public static final ThreadLocal<SimpleDateFormat> sdf_utc_sss = new ThreadLocal<SimpleDateFormat>() {
|
||
protected SimpleDateFormat initialValue() {
|
||
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
|
||
}
|
||
};
|
||
|
||
public static final ThreadLocal<SimpleDateFormat> sdf_Str = ThreadLocal.withInitial(() -> new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy"));
|
||
|
||
|
||
|
||
public static LocalDateTime strToLDT(String str,String format){
|
||
return LocalDateTime.parse(str, DateTimeFormatter.ofPattern(format));
|
||
}
|
||
|
||
public static String dateToStr(Date date){
|
||
return sdfhms.get().format(date);
|
||
}
|
||
|
||
public static String dateToStr(LocalDateTime date){
|
||
return dateToStr(date,DATE_TIME_PATTERN);
|
||
}
|
||
public static String dateToStr(LocalDateTime date,String format){
|
||
return date.format(DateTimeFormatter.ofPattern(format));
|
||
}
|
||
|
||
public static Date dateToStr(String dateString){
|
||
try {
|
||
return sdf_Str.get().parse(dateString);
|
||
} catch (ParseException e) {
|
||
throw new RuntimeException(e);
|
||
}
|
||
}
|
||
public static Date dateToStrYMDHds(String dateString){
|
||
try {
|
||
return sdfhms.get().parse(dateString);
|
||
} catch (ParseException e) {
|
||
throw new RuntimeException(e);
|
||
}
|
||
}
|
||
|
||
public static String dateToStr(Date date, ThreadLocal<SimpleDateFormat> format){
|
||
if (Objects.isNull(date)){
|
||
return null;
|
||
}
|
||
return format.get().format(date);
|
||
}
|
||
|
||
/**
|
||
* mongo 日期查询isodate
|
||
*
|
||
* @param dateStr
|
||
* @return
|
||
*/
|
||
public static Date dateToISODate(String dateStr) throws ParseException {
|
||
//T代表后面跟着时间,Z代表UTC统一时间
|
||
Date date = formatD(dateStr);
|
||
SimpleDateFormat format = sdfhms.get();
|
||
format.setCalendar(new GregorianCalendar(new SimpleTimeZone(0, "GMT")));
|
||
String isoDate = format.format(date);
|
||
return format.parse(isoDate);
|
||
}
|
||
|
||
public static Date formatD(String dateStr) throws ParseException {
|
||
return formatD(dateStr, DATE_TIME_PATTERN);
|
||
}
|
||
|
||
public static Date formatD(String dateStr, String format) throws ParseException {
|
||
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
|
||
|
||
return simpleDateFormat.parse(dateStr);
|
||
}
|
||
|
||
public static Date standardize(Date date, boolean stm) {
|
||
Calendar c = Calendar.getInstance();
|
||
c.setTime(date);
|
||
if (stm) {
|
||
c.set(Calendar.HOUR_OF_DAY, 0);
|
||
c.set(Calendar.MINUTE, 0);
|
||
c.set(Calendar.SECOND, 0);
|
||
c.set(Calendar.MILLISECOND, 0);
|
||
} else {
|
||
c.set(Calendar.HOUR_OF_DAY, 23);
|
||
c.set(Calendar.MINUTE, 59);
|
||
c.set(Calendar.SECOND, 59);
|
||
c.set(Calendar.MILLISECOND, 999);
|
||
}
|
||
return c.getTime();
|
||
}
|
||
|
||
|
||
public static void main(String[] args) throws ParseException {
|
||
|
||
// System.out.println(dateToISODate("2021-11-05T13:00:00Z"));
|
||
System.out.println(dateToStr(LocalDateTime.now()));
|
||
|
||
}
|
||
}
|