tl; др
OffsetDateTime.parse(
"2019-03-07 00:05:00-05:00".replace( " " , "T" )
)
Используйте смещение, Люк
Вам не нужен часовой пояс.Ваша строка содержит смещение от UTC на пять часов позже UTC.Это говорит нам о конкретном моменте, точке на временной шкале.
ISO 8601
Замените этот ПРОБЕЛ в середине ввода на T
, чтобы соответствовать ISO 8601. Классы java.time используют стандартные форматы:дефолт.Поэтому нет необходимости указывать шаблон форматирования.
OffsetDateTime
Анализировать как OffsetDateTime
.
String input = "2019-03-07 00:05:00-05:00".replace( " " , "T" ) ;
OffsetDateTime odt = OffsetDateTime.parse( input ) ;
ZonedDateTime
Если вы точно знаете, что это значение предназначалось дляопределенный часовой пояс, вы можете применить ZoneId
, чтобы получить ZonedDateTime
.
Имейте в виду, что US/Eastern
является устаревшим как имя часового пояса .Современный подход Continent/Region
.Возможно, вы имеете в виду America/New_York
.
ZoneId z = ZoneId.of( "America/New_York" ) ;
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;