2023-09-13 17:15:39 +08:00
|
|
|
|
package com.whdc.utils;
|
|
|
|
|
|
|
|
|
|
|
|
import java.text.ParseException;
|
|
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
|
import java.util.GregorianCalendar;
|
|
|
|
|
|
import java.util.SimpleTimeZone;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* @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 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> 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);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-06-19 15:44:47 +08:00
|
|
|
|
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));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-09-13 17:15:39 +08:00
|
|
|
|
public static Date dateToStr(String dateString){
|
|
|
|
|
|
try {
|
|
|
|
|
|
return sdf_Str.get().parse(dateString);
|
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-06-13 16:06:46 +08:00
|
|
|
|
public static Date dateToStrYMDHds(String dateString){
|
|
|
|
|
|
try {
|
|
|
|
|
|
return sdfhms.get().parse(dateString);
|
|
|
|
|
|
} catch (ParseException e) {
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-09-13 17:15:39 +08:00
|
|
|
|
|
|
|
|
|
|
public static String dateToStr(Date date, ThreadLocal<SimpleDateFormat> format){
|
|
|
|
|
|
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 void main(String[] args) throws ParseException {
|
|
|
|
|
|
|
2024-06-19 15:44:47 +08:00
|
|
|
|
// System.out.println(dateToISODate("2021-11-05T13:00:00Z"));
|
|
|
|
|
|
System.out.println(dateToStr(LocalDateTime.now()));
|
2023-09-13 17:15:39 +08:00
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|