From the previous series of blog can be seen in the new date and time Jdk8 in java.time package API classes designed well, but the use is still very widespread Date, which involves Date turn LocalDateTime, LocalDateTime turn Date. Here is another type of time conversion Encyclopedia, comprising conversion Instant, LocalDate, LocalDateTime, LocalTime and Date, the following is a utility class for reference:
package com.xkzhangsan.time.converter; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.temporal.TemporalAccessor; import java.util.Date; import java.util.Objects; /** * * @ClassName: DateTimeConverterUtil * @Description: DateTime Converter * @author xkzhangsan * @Date 2019 Nian 12 Yue 1 Ri * */ public class DateTimeConverterUtil { public static Date toDate(LocalDateTime localDateTime) { Objects.requireNonNull(localDateTime, "localDateTime"); return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant()); } public static Date toDate(LocalDate localDate) { Objects.requireNonNull(localDate, "localDate"); return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant()); } /** * Based on today's date + LocalTime form a new LocalDateTime converted to Date * @Param localtime * @return */ public static Date toDate(LocalTime localTime) { Objects.requireNonNull(localTime, "localTime"); return Date.from(LocalDate.now().atTime(localTime).atZone(ZoneId.systemDefault()).toInstant()); } public static Date toDate(Instant instant) { return Date.from(instant); } public static Date toDate(Long epochMilli){ Objects.requireNonNull(epochMilli, "epochMilli"); return new Date(epochMilli); } public static LocalDateTime toLocalDateTime(Date date) { Objects.requireNonNull(date, "date"); return Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDateTime(); } public static LocalDateTime toLocalDateTime(LocalDate localDate) { Objects.requireNonNull(localDate, "localDate"); return localDate.atStartOfDay(); } /** * Based on today's date + LocalTime form a new LocalDateTime * @Param localtime * @return */ public static LocalDateTime toLocalDateTime(LocalTime localTime) { Objects.requireNonNull(localTime, "localTime"); return LocalDate.now().atTime(localTime); } public static LocalDateTime toLocalDateTime(Instant instant) { return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); } public static LocalDateTime toLocalDateTime(Long epochMilli) { Objects.requireNonNull(epochMilli, "epochMilli"); return LocalDateTime.ofInstant(Instant.ofEpochMilli(epochMilli), ZoneId.systemDefault()); } public static LocalDateTime toLocalDateTime(TemporalAccessor temporal) { return LocalDateTime.from(temporal); } public static LocalDate toLocalDate(Date date) { return toLocalDateTime(date).toLocalDate(); } public static LocalDate toLocalDate(LocalDateTime localDateTime) { Objects.requireNonNull(localDateTime, "localDateTime"); return localDateTime.toLocalDate(); } public static LocalDate toLocalDate(Instant instant) { return toLocalDateTime(instant).toLocalDate(); } public static LocalDate toLocalDate(TemporalAccessor temporal) { return LocalDate.from(temporal); } public static LocalTime toLocalTime(Date date) { return toLocalDateTime(date).toLocalTime(); } public static LocalTime toLocalTime(LocalDateTime localDateTime) { Objects.requireNonNull(localDateTime, "localDateTime"); return localDateTime.toLocalTime(); } public static LocalTime toLocalTime(Instant instant) { return toLocalDateTime(instant).toLocalTime(); } public static LocalTime toLocalTime(TemporalAccessor temporal) { return LocalTime.from(temporal); } public static Instant toInstant(Date date) { Objects.requireNonNull(date, "date"); return date.toInstant(); } public static Instant toInstant(LocalDateTime localDateTime) { Objects.requireNonNull(localDateTime, "localDateTime"); return localDateTime.atZone(ZoneId.systemDefault()).toInstant(); } public static Instant toInstant(LocalDate localDate) { return toLocalDateTime(localDate).atZone(ZoneId.systemDefault()).toInstant(); } /** * Based on today's date + LocalTime form a new convert Instant LocalDateTime * @Param localtime * @return */ public static Instant toInstant(LocalTime localTime) { return toLocalDateTime(localTime).atZone(ZoneId.systemDefault()).toInstant(); } public static Instant toInstant(Long epochMilli) { Objects.requireNonNull(epochMilli, "epochMilli"); return Instant.ofEpochMilli(epochMilli); } public static Instant toInstant(TemporalAccessor temporal) { return Instant.from(temporal); } /** * Value is converted to milliseconds * From 1970-01-01T00: 00: 00Z start millisecond value * @param date * @return */ public static Long toEpochMilli(Date date){ Objects.requireNonNull(date, "date"); return date.getTime(); } /** * Value is converted to milliseconds * From 1970-01-01T00: 00: 00Z start millisecond value * @Param localdateti to * @return */ public static Long toEpochMilli(LocalDateTime localDateTime){ return toInstant(localDateTime).toEpochMilli(); } /** * Value is converted to milliseconds * From 1970-01-01T00: 00: 00Z start millisecond value * @Param LOCALDATE * @return */ public static Long toEpochMilli(LocalDate localDate){ return toInstant(localDate).toEpochMilli(); } /** * Value is converted to milliseconds * From 1970-01-01T00: 00: 00Z start millisecond value * @param instant * @return */ public static Long toEpochMilli(Instant instant){ Objects.requireNonNull(instant, "instant"); return instant.toEpochMilli(); } }
Test categories:
package com.xkzhangsan.time.test; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.util.Date; import org.junit.Test; import com.xkzhangsan.time.converter.DateTimeConverterUtil; public class ConverterTest { @Test public void dateConverterTest(){ System.out.println("===================dateConverterTest====================="); Date date = new Date(); System.out.println(DateTimeConverterUtil.toLocalDateTime(date)); System.out.println(DateTimeConverterUtil.toLocalDate(date)); System.out.println(DateTimeConverterUtil.toLocalTime(date)); System.out.println(DateTimeConverterUtil.toInstant(date)); } @Test public void localDateTimeConverterTest(){ System.out.println("===================localDateTimeConverterTest====================="); LocalDateTime ldt = LocalDateTime.now(); System.out.println(ldt); System.out.println(DateTimeConverterUtil.toDate(ldt)); System.out.println(DateTimeConverterUtil.toLocalDate(ldt)); System.out.println(DateTimeConverterUtil.toLocalTime(ldt)); System.out.println(DateTimeConverterUtil.toInstant(ldt)); } @Test public void localDateConverterTest(){ System.out.println("===================localDateConverterTest====================="); LocalDate ld = LocalDate.now(); System.out.println(ld); System.out.println(DateTimeConverterUtil.toDate(ld)); System.out.println(DateTimeConverterUtil.toLocalDateTime(ld)); System.out.println(DateTimeConverterUtil.toInstant(ld)); } @Test public void localTimeConverterTest(){ System.out.println("===================localTimeConverterTest====================="); LocalTime lt = LocalTime.now(); System.out.println(lt); System.out.println(DateTimeConverterUtil.toDate(lt)); System.out.println(DateTimeConverterUtil.toLocalDateTime(lt)); System.out.println(DateTimeConverterUtil.toLocalTime(lt)); System.out.println(DateTimeConverterUtil.toInstant(lt)); } @Test public void instantConverterTest () { System.out.println("===================instantConverterTest====================="); Instant instant = Instant.now(); System.out.println(instant); System.out.println(DateTimeConverterUtil.toDate(instant)); System.out.println(DateTimeConverterUtil.toLocalDateTime(instant)); System.out.println(DateTimeConverterUtil.toLocalDate(instant)); } }
Output:
===================dateConverterTest===================== 2020-01-05T22:41:56.606 2020-01-05 22:41:56.606 2020-01-05T14: 41: 56 .606Z =================== =================== localtimeconvertertest == 22:41:56.706 Sun Jan 05 22:41:56 CST 2020 2020-01-05T22:41:56.706 22:41:56.706 2020-01-05T14: 41: 56 .706Z =================== =================== localdateconvertertest == 2020-01-05 Sun Jan 05 00:00:00 CST 2020 2020-01-05T00:00 2020-01-04T16: 00 : 00Z =================== ===================== localdatetimeconvertertest 2020-01-05T22:41:56.718 Sun Jan 05 22:41:56 CST 2020 2020-01-05 22:41:56.718 2020-01-05T14:41:56.718Z ===================instantConverterTest===================== 2020-01-05T14: 41: 56 .719Z Sun Jan 05 22:41:56 CST 2020 2020-01-05T22:41:56.719 2020-01-05
git Address: https://github.com/xkzhangsan/xk-time