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 ~

 

posted @ 2019-10-29 11:55  kaichenkai  阅读(7324)  评论(0编辑  收藏  举报