在 Java 中从毫秒转换为 UTC 时间

2022-09-03 08:43:24

我试图在Java中将毫秒时间(自1970年1月1日以来的毫秒)转换为UTC时间。我已经看到很多其他问题,利用SimpleDateFormat来更改时区,但我不确定如何将时间放入SimpleDateFormat中,到目前为止,我只想出如何将其转换为字符串或日期。

例如,如果我的初始时间值1427723278405,我可以将其设置为星期一 Mar 30 09:48:45 EDT 使用其中一种,或者每当我尝试将其更改为 SimpleDateFormat 以执行类似操作时,我都会遇到问题,因为我不确定将日期或字符串转换为日期格式并更改时区的方法。String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (epoch));Date d = new Date(epoch);

如果有人有办法做到这一点,我将不胜感激,谢谢!


答案 1

java.time 选项

您可以使用 Java 8 及更高版本中内置的新 java.time 包

您可以在 UTC 时区中创建与该时间时刻相对应的 ZonedDateTime

ZonedDateTime utc = Instant.ofEpochMilli(1427723278405L).atZone(ZoneOffset.UTC);
System.out.println(utc);

如果您需要其他格式,也可以使用 DateTimeFormatter,例如:

System.out.println( DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss").format(utc));

答案 2

试试下面..

package com.example;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

public class TestClient {

    /**
     * @param args
     */
    public static void main(String[] args) {
        long time = 1427723278405L;
        SimpleDateFormat sdf = new SimpleDateFormat();
        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
        System.out.println(sdf.format(new Date(time)));

    }

}