Вопрос

У меня есть строка, содержащая Unix Epoch Time, и мне нужно преобразовать его в объект даты Java.

String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
  Date expiry = df.parse(date);
 } catch (ParseException ex) {
  ex.getStackTrace();
}

Отмеченная линия - это место, где у меня проблемы. Я не могу понять, каким должен быть аргумент в simpledateformat (), или даже если я должен использовать SimpleDateFormat ().

Это было полезно?

Решение

Как насчет просто:

Date expiry = new Date(Long.parseLong(date));

РЕДАКТИРОВАТЬ: Согласно RDE6173Ответ и более подробно рассмотрим вход, указанный в вопросе, «1081157732», по-видимому, составляет секундное значение эпохи, поэтому вы захотите размножить долгие из Parselong () на 1000, чтобы преобразовать в миллисекунд, который Что использует конструктор даты Java, так что:

Date expiry = new Date(Long.parseLong(date) * 1000);

Другие советы

Эпоха - это количество секунды С 1 января 1970 года ..

Так:

String epochString = "1081157732";
long epoch = Long.parseLong( epochString );
Date expiry = new Date( epoch * 1000 );

Чтобы получить больше информации:http://www.epochconverter.com/

Java.time

С использованием java.time Рамки встроены в Java 8 и позже.

import java.time.LocalDateTime;
import java.time.Instant;
import java.time.ZoneId;

long epoch = Long.parseLong("1081157732");
Instant instant = Instant.ofEpochSecond(epoch);
ZonedDateTime.ofInstant(instant, ZoneOffset.UTC); # ZonedDateTime = 2004-04-05T09:35:32Z[UTC]

В этом случае вы должны лучше использовать ZonedDateTime Чтобы отметить это как дату в универсальное глобальное время часовой пояс, потому что эпоха определяется в UTC в Unix Time используется Java.

ZoneOffset Содержит удобную константу для часового пояса UTC, как видно в последней строке выше. Его суперкласс, ZoneId можно использовать для адаптации в другие часовые пояса.

ZoneId zoneId = ZoneId.of( "America/Montreal" );
long timestamp = Long.parseLong(date)
Date expiry = new Date(timestamp * 1000)

Еще лучше, используйте Jodatime. Анкет Гораздо проще разрабатывать строки в струны. Также безопасно. Стоит времени, которое вам понадобится для его реализации.

Чтобы преобразовать секунду марки времени в Millisecond Time Stamp. Вы можете использовать API TimeUnit и аккуратный.

long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)

Гул .... если я не ошибаюсь, время эпоха Unix на самом деле то же самое, что и

System.currentTimeMillis()

Так писать

try {
    Date expiry = new Date(Long.parseLong(date));
}
catch(NumberFormatException e) {
    // ...
}

Должен работать (и быть намного быстрее, эта дата анализа)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top