Как разобрать дату из API погоды Yahoo в Java Date - PullRequest
1 голос
/ 03 мая 2019

Я использую API погоды Yahoo для создания простого приложения. В приемнике JSON есть поле pubDate, которое (согласно документации) в RFC 882 (похоже на "pubDate":1546992000). Кто-нибудь знает как конвертировать такую ​​дату в дату в андроиде?

Ответы [ 3 ]

1 голос
/ 03 мая 2019

Это должно быть примерно так: new SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new Date( [yourDateValue] * 1000L)) Вы можете проверить результат здесь: https://www.unixtimeconverter.io/ [Вставьте свою дату публикации здесь]

1 голос
/ 03 мая 2019

Попробуйте это:

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
String dateString = formatter.format(new Date(yourDateValue)));

Вы можете проверить и преобразовать миллисекунды в дату с здесь .Когда я записываю ваше ссылочное значение для конвертации, оно дает мне дату с 1970 года. Вы должны добавить «000» в конец вашего значения или умножить на 1000, чтобы получить правильную дату.

0 голосов
/ 03 мая 2019

ТЛ; др

Instant.ofEpochSecond( 
    Long.parseLong( "1546992000" ) 
)

… представляет первый момент 1 января 2019 года в UTC .

2019-01-09T00: 00: 00Z

java.time

Современный подход использует классы java.time , которые годы назад вытеснили ужасные классы Date / Calendar / SimpleDateFormat.

Предполагая, что 1546992000 представляет количество целых секунд с начала отсчета эпохи первого момента 1970 года в UTC, анализируется как Instant.

Instant instant = Instant.ofEpochSecond( 1_546_992_000L );

instant.toString (): 2019-01-09T00: 00: 00Z

Чтобы увидеть этот момент через часы настенного времени, используемые людьми определенного региона (часового пояса), установите значение ZonedDateTime.

ZoneId z = ZoneId.of( "Africa/Casablanca" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;

ZonedDateTime.toString (): 2019-01-09T01: 00 + 01: 00 [Африка / Касабланка]


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где взять классы java.time?

...