package com.mzl.flower.utils; import org.apache.poi.util.LocaleUtil; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; public class DateUtils { /** * * @param dateString yyyy-MM-dd * @return */ public static LocalDateTime dateToLocalDateTime(String dateString,boolean isBegin) { if(isBegin){ dateString = dateString+" 00:00:00"; }else{ dateString = dateString+" 23:59:59"; } return dateTimeStringToLocalDateTime(dateString); } /** * * @param dateTimeString yyyy-MM-dd HH:mm:ss * @return */ public static LocalDateTime dateTimeStringToLocalDateTime(String dateTimeString) { // 定义日期时间格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); // 将字符串转换为LocalDateTime对象 LocalDateTime dateTime = LocalDateTime.parse(dateTimeString, formatter); return dateTime; } /** * 将LocalDateTime对象转换为字符串 * @return */ public static String toString(LocalDate date,String format) { // 定义日期时间格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format); String str = date.format(formatter); return str; } public static Date getJavaDate(double date) { return getJavaDate(date, false, (TimeZone)null, false); } public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz) { return getJavaDate(date, use1904windowing, tz, false); } public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz, boolean roundSeconds) { Calendar calendar = getJavaCalendar(date, use1904windowing, tz, roundSeconds); return calendar == null ? null : calendar.getTime(); } public static Calendar getJavaCalendar(double date, boolean use1904windowing, TimeZone timeZone, boolean roundSeconds) { if (!isValidExcelDate(date)) { return null; } else { int wholeDays = (int)Math.floor(date); int millisecondsInDay = (int)((date - (double)wholeDays) * 8.64E7 + 0.5); Calendar calendar; if (timeZone != null) { calendar = LocaleUtil.getLocaleCalendar(timeZone); } else { calendar = LocaleUtil.getLocaleCalendar(); } setCalendar(calendar, wholeDays, millisecondsInDay, use1904windowing, roundSeconds); return calendar; } } public static boolean isValidExcelDate(double value) { return value > -4.9E-324; } public static void setCalendar(Calendar calendar, int wholeDays, int millisecondsInDay, boolean use1904windowing, boolean roundSeconds) { int startYear = 1900; int dayAdjust = -1; if (use1904windowing) { startYear = 1904; dayAdjust = 1; } else if (wholeDays < 61) { dayAdjust = 0; } calendar.set(startYear, 0, wholeDays + dayAdjust, 0, 0, 0); calendar.set(14, millisecondsInDay); if (calendar.get(14) == 0) { calendar.clear(14); } if (roundSeconds) { calendar.add(14, 500); calendar.clear(14); } } public static String format(LocalDateTime dateTime, String format) { if (dateTime == null || format == null) { return null; } DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format).withZone(ZoneId.of("Asia/Shanghai")); return dateTimeFormatter.format(dateTime); } public static void main(String[] args) { // 定义日期时间字符串 String dateTimeString = "2024-06-17 00:00:00"; // 打印结果 System.out.println("转换后的LocalDateTime对象: " + dateTimeStringToLocalDateTime(dateTimeString)); } }