Java8 LocalDateTime獲取時間戳(毫秒/秒)、LocalDateTime與String互轉、Date與LocalDateTime互轉

本文目前提供:LocalDateTime獲取時間戳(毫秒/秒)、LocalDateTime與String互轉、Date與LocalDateTime互轉html

文中都使用的時區都是東8區,也就是北京時間。這是爲了防止服務器設置時區錯誤時致使時間不對,若是您是其餘時區,請自行修改java

 

1.LocalDateTime獲取毫秒數

//獲取秒數
Long second = LocalDateTime.now().toEpochSecond(ZoneOffset.of("+8"));
//獲取毫秒數
Long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli();

 

2.LocalDateTime與String互轉

//時間轉字符串格式化
 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS");
 String dateTime = LocalDateTime.now(ZoneOffset.of("+8")).format(formatter);

//字符串轉時間
String dateTimeStr = "2018-07-28 14:11:15";
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);

 

3.Date與LocalDateTime互轉

 

//將java.util.Date 轉換爲java8 的java.time.LocalDateTime,默認時區爲東8區
    public static LocalDateTime dateConvertToLocalDateTime(Date date) {
        return date.toInstant().atOffset(ZoneOffset.of("+8")).toLocalDateTime();
    }

   
    //將java8 的 java.time.LocalDateTime 轉換爲 java.util.Date,默認時區爲東8區
    public static Date localDateTimeConvertToDate(LocalDateTime localDateTime) {
        return Date.from(localDateTime.toInstant(ZoneOffset.of("+8")));
    }


    /**
     * 測試轉換是否正確
     */
    @Test
    public void testDateConvertToLocalDateTime() {
        Date date = DateUtils.parseDate("2018-08-01 21:22:22", DateUtils.DATE_YMDHMS);
        LocalDateTime localDateTime = DateUtils.dateConvertToLocalDateTime(date);
        Long localDateTimeSecond = localDateTime.toEpochSecond(ZoneOffset.of("+8"));
        Long dateSecond = date.toInstant().atOffset(ZoneOffset.of("+8")).toEpochSecond();
        Assert.assertTrue(dateSecond.equals(localDateTimeSecond));
    }

 

 

相關文章
相關標籤/搜索