Преобразование из миллисекунд в 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()));