2017-01-01 00:08:57.231 формат равен гггг-мм-дд.чч: мм: сс?
Я немного сбит с толку, в каком формате эти временные метки. Мне сказали, что формат для использования yyyy-MM-dd.HH:mm:ss
но все метки времени выглядят так 2017-01-01 00:08:57.231
, 2017-01-01 07:43:36.348
, или же 2017-01-01 13:25:55.683
, Я не понимаю, почему есть четыре раздела ко времени ?:Hour:Minute:Second
в реальных данных, которые у меня есть, когда формат, который я должен использовать, имеет только три временных раздела. Являются ли эти метки даты и времени на самом деле не в формате yyyy-MM-dd.HH:mm:ss
?
2 ответа
Нет, ваше подозрение верное, пример строки даты и времени не в формате yyyy-MM-dd.HH:mm:ss
, Точка между dd и HH должна быть простой ошибкой, это должен быть пробел, поскольку в строках метки времени есть пробел между датой и временем. Кроме того, все ваши примеры строк включают в себя миллисекунды: в 00:08:57.231 у вас есть 57 секунд и 231 миллисекунда, или, если хотите, 57.231 секунда, поэтому последний раздел также может называться долей секунды.
DateTimeFormatter formatter
= DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.SSS");
String timestampString = "2017-01-01 00:08:57.231";
LocalDateTime dateTime = LocalDateTime.parse(timestampString, formatter);
System.out.println(dateTime);
Выход:
2017-01-01T00: 08: 57,231
Для любопытных: возможно проанализировать строку, или, точнее, большую ее часть, в заданном формате, только исправляя точку в пространстве:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String timestampString = "2017-01-01 00:08:57.231";
LocalDateTime dateTime = LocalDateTime.from(
formatter.parse(timestampString, new ParsePosition(0)));
В этом случае результат приходит без миллисекунд:
2017-01-01T00: 08: 57
Однако я не вижу причин, почему вы должны этого хотеть.
Избегайте SimpleDateFormat
В комментарии вы дали фрагмент, который использует SimpleDateFormat
учебный класс. Этот класс не только давно устарел, но и общеизвестно проблематичен. Я не вижу причин, почему вы должны хотеть использовать это. Вместо этого я использую java.time
, современный Java API даты и времени. По моему опыту, с ним гораздо приятнее работать.
связи
Учебник Oracle: Дата и время, объясняющие, как использовать java.time
, Возможно, вы захотите изучить раздел Парсинг и форматирование.
Эти метки времени находятся в yyyy-MM-dd HH:mm:ss:ms
формат, последние три цифры миллисекунды.