Преобразование из миллисекунд в UTC время в Java

Я пытаюсь преобразовать миллисекундное время (миллисекунды с 1 января 1970 года) в время в UTC на Java. Я видел много других вопросов, которые используют SimpleDateFormat для изменения часового пояса, но я не уверен, как получить время в SimpleDateFormat, до сих пор я только понял, как получить его в строку или дату.

Так, например, если мое начальное значение времени 1427723278405, я могу получить это в Mon Mar 30 09:48: 45 EDT, используя либо String date = new SimpleDateFormat("MMM dd hh:mm:ss z yyyy", Locale.ENGLISH).format(new Date (epoch)); или Date d = new Date(epoch); но всякий раз, когда я попробуйте изменить его на SimpleDateFormat, чтобы сделать что-то вроде этой я сталкиваюсь с проблемами, потому что я не уверен, как преобразовать дату или строку в DateFormat и изменить часовой пояс.

Если у кого есть способ сделать это, я был бы весьма признателен за помощь, спасибо!

3 ответов


попробовать ниже..

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

    }

}

java.вариант времени

можно использовать java.пакет времени встроенный в Java 8 и более поздних версий.

вы можете создать ZonedDateTime соответствующий этому моменту времени в часовом поясе UTC:

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

вы можете проверить это..

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