tj
2025-04-01 16c60b7e3b834b05599882ab1ffe99ec78664762
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
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));
    }
}