Java 日期時間與unix時間戳之間轉換


日期時間  <-->  時間戳

java.time 包提供的新的日期和時間API

LocalDateTime: 本地日期時間類

ZoneId: 時區類

ZonedDateTime: 帶時區的日期時間類

Instant: 高精度時間戳

long: 長整型

 

LocalDateTime + ZoneId = ZonedDateTime

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // 直接獲取 ZonedDateTime 對象
        ZonedDateTime zdt1 = ZonedDateTime.now();
        System.out.println(zdt1);

        // LocalDateTime + ZoneId = ZonedDateTime
        LocalDateTime ldt = LocalDateTime.now();
        ZonedDateTime zdt2 = ldt.atZone(ZoneId.systemDefault());
        System.out.println(zdt2);
    }
}

運行結果:
2019-10-29T14:01:16.169741500+08:00[Asia/Shanghai]
2019-10-29T14:01:16.170744+08:00[Asia/Shanghai]

 

ZonedDateTime --> LocalDateTime

import java.time.LocalDateTime;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // 直接獲取 ZonedDateTime 對象
        ZonedDateTime zdt = ZonedDateTime.now();
        System.out.println(zdt);

        //轉換為LocalDateTime時,直接丟棄了時區信息
        LocalDateTime ldt = zdt.toLocalDateTime();
        System.out.println(ldt);
    }
}

運行結果:
2019-10-29T14:00:13.876198+08:00[Asia/Shanghai]
2019-10-29T14:00:13.876198

 

ZonedDateTime -->  Instant  -->  long

import java.time.Instant;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // 直接獲取 ZonedDateTime 對象
        ZonedDateTime zdt = ZonedDateTime.now();
        System.out.println(zdt);
        // to Instants
        Instant ins = zdt.toInstant();
        System.out.println(ins);
        // to long
        System.out.println(ins.toEpochMilli());
    }
}

運行結果:
2019-10-29T14:11:00.265786900+08:00[Asia/Shanghai]
2019-10-29T06:11:00.265786900Z
1572329460265

 

long  -->  Instant  -->  ZonedDateTime

import java.time.Instant;
import java.time.ZoneId;
import java.time.ZonedDateTime;

public class Main {
    public static void main(String[] args) {
        // 獲取 unix 毫秒值
        long insMilli = Instant.now().toEpochMilli();
        System.out.println(insMilli);

        // to Instant
        Instant ins = Instant.ofEpochMilli(insMilli);
        // to ZonedDateTime
        ZonedDateTime zdt = ZonedDateTime.ofInstant(ins, ZoneId.systemDefault());
        System.out.println(zdt);
    }
}

運行結果:
1572330350986
2019-10-29T14:25:50.986+08:00[Asia/Shanghai]

 

 

ending ~

 


免責聲明!

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



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