Время эпохи Unix на сегодняшний день Java-объект



У меня есть строка, содержащая время эпохи UNIX, и мне нужно, чтобы преобразовать его в объект Date в Java.



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


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

650   7  

7 ответов:

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

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

редактировать: согласно rde6173ответ и более пристальный взгляд на вход, указанный в вопросе," 1081157732", похоже, является значением эпохи на основе секунд, поэтому вы хотите умножить long from 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.время

С помощью 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 часовой пояс, потому что эпоха определяется в 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. Гораздо проще разбирать строки и в строки. Также является потокобезопасным. Стоит время, которое у вас уйдет на его реализацию.

чтобы преобразовать секундную метку времени в миллисекундную метку времени. Вы можете использовать API TimeUnit и аккуратно, как это.

long milliSecondTimeStamp = MILLISECONDS.convert(secondsTimeStamp, SECONDS)

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

System.currentTimeMillis()

так писать!--3-->

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

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

Comments

    Ничего не найдено.