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

16

我试图将一个毫秒时间(自1970年1月1日以来的毫秒数)转换为Java中的UTC时间。我看到很多其他问题都利用SimpleDateFormat更改时区,但我不确定如何将时间转换为SimpleDateFormat格式,到目前为止,我只知道如何将其转换为字符串或日期。

例如,如果我的初始时间值为1427723278405,则可以使用String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (epoch));Date d = new Date(epoch);将其转换为Mon Mar 30 09:48:45 EDT ,但每当我尝试将其更改为SimpleDateFormat以执行此操作时,我遇到了问题,因为我不知道如何将日期或字符串转换为DateFormat并更改时区。

如果有人知道如何做到这一点,我将非常感激您的帮助,谢谢!

3个回答

35

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));

17

请尝试以下...

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)));

    }

}

2

你可以查看这个...

Calendar calendar = new GregorianCalendar();
    calendar.setTimeInMillis(1427723278405L);

    DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");

    formatter.setCalendar(calendar);

    System.out.println(formatter.format(calendar.getTime()));

    formatter.setTimeZone(TimeZone.getTimeZone("America/New_York"));

    System.out.println(formatter.format(calendar.getTime()));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接