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 sdfhmsS = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); } }; public static final ThreadLocal sdfYMDh = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd HH:mm")); public static final ThreadLocal sdfhms = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat(DATE_TIME_PATTERN); } }; public static final ThreadLocal sdfymd = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat(DATE_PATTERN); } }; public static final ThreadLocal sdf_utc = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); } }; public static final ThreadLocal sdf_utc_sss = new ThreadLocal() { protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); } }; public static final ThreadLocal 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 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())); } }