Подтвердить что ты не робот

Преобразование метки времени unix на сегодняшний день в java

Как я могу конвертировать минуты из метки времени unix в дату и время в java. Например, временная метка 1372339860 соответствует Thu, 27 Jun 2013 13:31:00 GMT.

Я хочу преобразовать 1372339860 в 2013-06-27 13:31:00 GMT.

Изменить: на самом деле я хочу, чтобы это было в соответствии с расписанием времени в США GMT-4, поэтому оно будет 2013-06-27 09:31:00.

4b9b3361

Ответ 1

Вы можете использовать SimlpeDateFormat для форматирования своей даты следующим образом:

long unixSeconds = 1372339860;
// convert seconds to milliseconds
Date date = new Date(unixSeconds*1000L); 
// the format of your date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z"); 
// give a timezone reference for formatting (see comment at the bottom)
sdf.setTimeZone(TimeZone.getTimeZone("GMT-4")); 
String formattedDate = sdf.format(date);
System.out.println(formattedDate);

Образец, который SimpleDateFormat принимает, если он очень гибкий, вы можете проверить в javadocs все варианты, которые вы можете использовать для создания различного форматирования на основе шаблонов, которые вы пишете, с учетом определенного Date. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html

  • Поскольку Date предоставляет метод getTime(), который возвращает миллисекунды с EPOC, требуется, чтобы вы указали SimpleDateFormat часовой пояс, чтобы отформатировать дату, соответствующую вашей временной зоне, иначе она будет использовать часовой пояс по умолчанию из JVM (который, если он правильно настроен, будет в любом случае прав)

Ответ 2

В Java 8 представлен метод утилиты Instant.ofEpochSecond для создания Instant из временной метки Unix, это можно затем преобразовать в ZonedDateTime и, наконец, отформатировать, например:

final DateTimeFormatter formatter = 
    DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

final long unixTime = 1372339860;
final String formattedDtm = Instant.ofEpochSecond(unixTime)
        .atZone(ZoneId.of("GMT-4"))
        .format(formatter);

System.out.println(formattedDtm);   // => '2013-06-27 09:31:00'

Я думал, что это может быть полезно для людей, которые используют Java 8.

Ответ 3

Вам нужно преобразовать его в миллисекунды, умножив метку времени на 1000:

java.util.Date dateTime=new java.util.Date((long)timeStamp*1000);