Как конвертировать RFC-1123 форматер даты и времени в местное время

Я получаю дату и время Thu, 25 Aug 2016 08:59:00 GMT в этом формате RFC 1123 в моем приложении для Android. Мне нужно перевести на местное время.

1 ответ

DateTimeFormatter.RFC_1123_DATE_TIME

Классы java.time могут напрямую анализировать / генерировать строки в RFC 1123 через DateTimeFormatter.RFC_1123_DATE_TIME постоянная.

ZonedDateTime zdt = 
    ZonedDateTime.parse( 
        "Thu, 25 Aug 2016 08:59:00 GMT" ,  
        DateTimeFormatter.RFC_1123_DATE_TIME 
    ) 
;

Оттуда настройте в желаемый часовой пояс.

ZoneId z = ZoneId.of( "America/Montreal" );  // Or "Asia/Kolkata", etc.
ZonedDateTime zdtMontreal = zdt.withZoneSameInstant( z );

К вашему сведению, этот формат RFC 1123 ужасен и устарел в наши дни. Проблемы формата включают в себя: предполагает английский язык, трудно анализировать и использует аббревиатуры зон из 3-4 букв, которые не являются зонами реального времени, не стандартизированы и даже не уникальны (!). Вместо:

  • Укажите часовые пояса, используя надлежащие часовые пояса, определенные IANA.
  • Сериализация в текст с использованием стандартных форматов ISO 8601.
    Классы java.time по умолчанию используют эти форматы при разборе / генерации текстовых представлений значений даты и времени.

Поиск переполнения стека для получения дополнительной информации о настройке часовых поясов и генерации строк значений даты и времени.


О java.time

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

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

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

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

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

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь, такие как Interval, YearWeek, YearQuarter и многое другое.

Другие вопросы по тегам