ТЛ; др
ZonedDateTime.parse(
"Mon, 30 Sep 2002 01:56:02 GMT" ,
DateTimeFormatter.RFC_1123_DATE_TIME
)
2002-09-30T01: 56: 02Z
RFC 1123
Формат ваших строк, например Mon, 30 Sep 2002 01:56:02 GMT
, определен в устаревших стандартах RFC 1123 & RFC 822 .
Кстати, это ужасный формат. При сериализации значений даты и времени в текст, вместо этого используйте стандартные форматы ISO 8601 . Вы найдете более новые стандарты и протоколы, принимающие форматы ISO 8601 в настоящее время.
java.time
Проект Joda-Time теперь находится в режиме обслуживания , и команда рекомендует перейти на классы java.time . См. Учебник по Oracle .
Класс java.time DateTimeFormatter
имеет встроенный форматер для этого архаичного формата: DateTimeFormatter.RFC_1123_DATE_TIME
.
String input = "Mon, 30 Sep 2002 01:56:02 GMT";
DateTimeFormatter f = DateTimeFormatter.RFC_1123_DATE_TIME;
Используйте этот форматер для создания экземпляра объекта ZonedDateTime
.
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
Дамп на консоль.
String output = zdt.toString() ; // Generate a string in standard ISO 8601 format.
System.out.println( "zdt.toString(): " + output );
См. Этот код, запущенный на IdeOne.com .
zdt.toString (): 2002-09-30T01: 56: 02Z
О java.time
Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют проблемные старые устаревшие классы даты и времени, такие как java.util.Date
, Calendar
и & SimpleDateFormat
.
Проект Joda-Time , который теперь находится в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval
, YearWeek
, YearQuarter
и more .