Смарт-объекты, а не тупые строки
Убедитесь, что вы понимаете, что объект даты и времени - это , а не текст, который не совпадает с String
.
Объект даты и времени может генерировать строку, содержащую текст, который представляет значение.Эта строка может быть создана в соответствии с различными форматами, локализованными для всех типов локалей.И объект даты-времени может быть создан путем анализа входной строки после преобразования в значение для объекта.Но строка и объект даты и времени разделены и различны.
Используйте объекты даты и времени в вашей кодовой базе всякий раз, когда это целесообразно, вместо того, чтобы полагаться на простые строки.
java.time
Вы используете ужасные классы даты и времени, которые были вытеснены несколько лет назад классами java.time .Никогда не используйте java.util.Date
, ни java.sql.Timestamp
.
. Анализируйте входную строку как OffsetDateTime
объект.
String input = "2017-01-01T00:00:00.000-05:00" ;
OffsetDateTime odt = OffsetDateTime.parse( input ) ;
Если ваша цель - сохранить это значение как переменную-член в вашем классе, сделайте эту переменную-член типа OffsetDateTime
, а не String
.
Метод toString
генерирует текст в стандартном формате ISO 8601.
Для создания текста в других форматах используйте класс DateTimeFormatter
.Этот класс уже освещался много раз, поэтому ищите переполнение стека, чтобы узнать больше.
Остерегайтесь генерации строк, которые представляют момент, но при этом опускают индикатор часового пояса или смещения от UTC.Это все равно, что сообщать сумму денег, не упоминая при этом валюту.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "uuuu-MM-dd HH:mm:ss" ) ;
String output = odt.format( f ) ;