在Java

时间:2015-07-08 12:00:16

标签: java date datetime simpledateformat

我试图将毫秒时间(自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);到达美国东部时间3月30日09:48:45,但每当我尝试将其更改为SimpleDateFormat做类似this的事情我遇到问题因为我不确定将Date或String转换为DateFormat并更改时区的方法。

如果有人有办法做到这一点,我将非常感谢你的帮助,谢谢!

3 个答案:

答案 0 :(得分:22)

java.time选项

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

您可以在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));

答案 1 :(得分:13)

尝试以下..

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 :(得分:1)

你可以查看..

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