java8日期工具类

工具类代码

更多

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
import java.time.*;
import java.util.Date;

public class DateUtil {

    /**
     * From LocalDate to Date.
     *
     * @param date Origin local date.
     * @return Date.
     */
    public static Date asDate(LocalDate date) {
        return Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
    }

    /**
     * From LocalDateTime to Date.
     *
     * @param dateTime Origin local datetime.
     * @return Date.
     */
    public static Date asDate(LocalDateTime dateTime) {
        return Date.from(dateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * From Date to LocalDate.
     *
     * @param date Origin date.
     * @return LocalDate.
     */
    public static LocalDate asLocalDate(Date date) {
        return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate();
    }

    /**
     * From Date to LocalDateTime.
     *
     * @param date Origin date.
     * @return LocalDateTime.
     */
    public static LocalDateTime asLocalDateTime(Date date) {
        return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime();
    }

    /**
     * Convert LocalDateTime's zone,Also can implements with {@link OffsetDateTime}
     *
     * @param dateTime The datetime need to convert.
     * @param from     The origin zone.
     * @param to       The target zone.
     * @return The LocalDateTime for target zone.
     */
    public static LocalDateTime changeZone(LocalDateTime dateTime, ZoneId from, ZoneId to) {
        return ZonedDateTime.of(dateTime, from).withZoneSameInstant(to).toLocalDateTime();
    }

    private DateUtil() {
    }
}