Java中long類型時間戳與各種時間類型之間的轉換


筆者最近在作項目時需要做時間類型和時間戳之間的轉換,覺得這一塊的內容有時候感覺東一塊、西一塊的,因此自己想整理一下這兩者之間的轉換。

1.時間類型轉時間戳

  • offsetDateTime轉時間戳
        OffsetDateTime time1 = OffsetDateTime.now();
        long timeStamp1 = time1.getLong(ChronoField.INSTANT_SECONDS);	//10位時間戳,按秒
        long timeStamp2 = (Timestamp.valueOf(time1.atZoneSameInstant(ZoneId.of("Z")).toLocalDateTime())).getTime();		//13位時間戳,按毫秒
        System.out.println("時間戳1:"+timeStamp1);
        System.out.println("時間戳2:"+timeStamp2);

打印效果如下:

時間戳1:1627026830
時間戳2:1626998030096

2.時間戳轉時間類型

  • 時間戳轉offsetDateTime

使用秒級時間戳:

        OffsetDateTime time1 = OffsetDateTime.now();
        long timeStamp1 = time1.getLong(ChronoField.INSTANT_SECONDS);
        LocalDateTime localDateTime1 = Instant.ofEpochSecond(timeStamp1).atOffset(ZoneOffset.UTC).toLocalDateTime();
        OffsetDateTime dateTime1 = OffsetDateTime.of(localDateTime1, ZoneOffset.UTC);
        System.out.println(dateTime1);

​ 打印如下:

2021-07-23T11:06:48Z

使用毫秒級時間戳:

    OffsetDateTime time1 = OffsetDateTime.now();
    long timeStamp2 = (Timestamp.valueOf(time1.atZoneSameInstant(ZoneId.of("Z")).toLocalDateTime())).getTime();
    LocalDateTime localDateTime2 = Instant.ofEpochSecond(timeStamp2).atOffset(ZoneOffset.UTC).toLocalDateTime();
    OffsetDateTime dateTime2 = OffsetDateTime.of(localDateTime2, ZoneOffset.UTC);
    System.out.println(dateTime2);

​ 打印如下:

2021-07-23T03:06:48.341Z

參考文章:

時間戳和LocalDateTime和Date互轉和格式化

java - Convert OffsetDateTime to UTC Timestamp - Stack Overflow


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM