Правильный принятый ответ Джона Скита. Этот ответ расширяет эти идеи.
Избегайте устаревших классов даты и времени
Некоторые другие ответы и вопрос смешивают старые устаревшие классы даты и времени с новыми. Это ненужная и плохая практика. Вся суть java.time должны заменить проблемные и запутанные старые классы.
- Вам не нужно
java.util.Date
.
- Вам не нужно
java.util.Calendar
.
LocalDateTime
В вашей входной строке отсутствует какая-либо информация о смещении от UTC или часовом поясе. Поэтому мы анализируем его как объект LocalDateTime
. .
Для синтаксического анализа мы заменяем ПРОБЕЛ в середине на T
, чтобы соответствовать стандарту ISO 8601. для форматов даты и времени.
String input = "2011-02-18 05:00:00.0".replace( " " , "T" );
LocalDateTime ldt = LocalDateTime.parse( input );
LocalTime
Чтобы сосредоточиться на времени суток без даты, запросите LocalTime
.
LocalTime lt = ldt.toLocalTime();
ZonedDateTime
Обратите внимание, что ни один из этих моментов не является реальным моментом, а не точкой на временной шкале. Без контекста смещения от UTC или часового пояса мы не знаем, имели ли вы в виду 5 утра в Окленде, Новая Зеландия, или 5 утра в Калькутте, Индиана, или 5 утра в Париже, Франция, или 5 утра в Монреале, Квебек. Каждый из них будет очень разными моментами времени.
Если по контексту вы точно знаете предполагаемый часовой пояс, примените его. Примените ZoneId
, чтобы получить ZonedDateTime
.
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = ldt.atZone( z );
Оттуда запросите LocalTime
, если хотите.
LocalTime lt = zdt.toLocalTime();
Instant
Если вы хотите увидеть тот же момент в UTC, извлеките файл Instant
. Класс Instant
представляет момент на временная шкала в UTC с разрешением наносекунды (до девяти (9) цифр десятичной дроби).
Как правило, лучше всего сосредоточиться на UTC в большей части вашей бизнес-логики, ведения журналов, хранения данных и данных. обмен. Научитесь думать о UTC как о «единственном истинном времени».
Instant instant = zdt.toInstant(); // Same moment, shifted to UTC.
person
Basil Bourque
schedule
05.10.2016