tl; др
ZonedDateTime
.parse(
"Mon Sep 02 00:00:00 WIB 2019" ,
DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , Locale.US )
)
.toLocalDate()
2019-09-02
java .time
Вы используете ужасные классы даты и времени, которые были годами go, вытесненными современными java .time классами, определенными в JSR 310.
Определите шаблон форматирования в соответствии с вашим вводом. Укажите Locale
, чтобы определить человеческий язык и культурные нормы для использования при разборе названия месяца, названия дня и т. Д.
String input = "Mon Sep 02 00:00:00 WIB 2019";
Locale locale = Locale.US;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "EEE MMM dd HH:mm:ss z uuuu" , locale );
Parse.
ZonedDateTime zdt = ZonedDateTime.parse( input , f );
Dump на консоль, используя стандартный формат ISO 8601 для сгенерированного текста, разумно расширяя стандарт, добавляя название часового пояса в квадратных скобках.
System.out.println( "zdt = " + zdt );
zdt = 2019-09-02T00: 00+ 07:00 [Азия / Джакарта]
Требуется только дата, без времени суток и без часового пояса.
Но вы должны понимать, что в любой данный момент дата меняется по всему миру в зависимости от часового пояса. Так что в любой момент это может быть «завтра» в Токио, Япония, тогда как в «Толедо, Огайо, США» все еще «вчера».
Хотите ли вы дату, показанную в Индонезии?
LocalDate ld = zdt.toLocalDate() ;
Или вы хотите, чтобы дата отображалась в UT C?
LocalDate ld =
zdt
.toOffsetDateTime()
.withOffsetSameInstant( ZoneOffset.UTC )
.toLocalDate()
;
Затем сгенерируйте желаемую выходную строку, формат которой соответствует используемому стандартному формату ISO 8601 по умолчанию в LocalDate::toString
.
String output = ld.toString() ;
Совет. Сообщите издателю свои данные о:
- Стандарте ISO 8601 , определяющем форматы даты и времени использовать при обмене значениями даты и времени в виде текста.
- Мудрость общего сообщения моментов в UT C (смещение нуля часов-минут-секунд), а не в конкретное время zone.
- Имена зон реального времени имеют формат
Continent/Region
, , а не 2-4-буквенные псевдозоны, такие как WIB
, CST
или IST
.