package com.mzl.flower.utils;
|
|
import org.apache.poi.util.LocaleUtil;
|
|
import java.time.LocalDateTime;
|
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;
|
}
|
|
|
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 void main(String[] args) {
|
// 定义日期时间字符串
|
String dateTimeString = "2024-06-17 00:00:00";
|
// 打印结果
|
System.out.println("转换后的LocalDateTime对象: " + dateTimeStringToLocalDateTime(dateTimeString));
|
}
|
}
|