将UTC中的纪元时间转换为另一个时区中的纪元时间

时间:2019-06-14 10:13:24

标签: java datetime java-8

我需要将UTC的时间转换为不同时区的时间。例如:UTC时间为1389556017000,以美国/蒂华纳时区为新纪元。

public static void main(String[] args) {


        Long epoch_date = 1389556017000L;

        ZonedDateTime date1= Instant.ofEpochMilli(epoch_date)
                             .atZone(ZoneId.of("America/Tijuana"));

        long epoch_second = date1.toInstant().toEpochMilli();

       System.out.println("Epoch time in new timezone is  :" + epoch_second);
    }

我的输出与输入相同...

2 个答案:

答案 0 :(得分:5)

Epoch时间是绝对时间点。 它与任何时区都不相关。

例如-印度的6:30 PM与英国的1:00 PM相同。 两个时代的时代是相同的。

您可以通过-https://en.wikipedia.org/wiki/Epoch

阅读更多内容

答案 1 :(得分:3)

2014-01-12T11:46:57-08:00和2014-01-12T19:46:57Z是同一时间(称为T1)。

1970-01-01T00:00:00Z(即时代的开始)和1969-12-31T16:00:00-08:00(称为T0)是相同的时间。

时间在内部存储为T0和相关时间之间的秒数(毫秒)。

对于T1和T0之间的秒数(毫秒),只有一个答案。