Дата разбора java с пикосекундой

У меня есть строковая дата с пикосекундами (от 9 до 12 цифр после точки), и когда я пытаюсь проанализировать дату с DateTimeFormatter:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSSSSSSSS");

он выдает исключение, которое говорит, что я не могу создать формат с более чем 9 цифрами после периода.

Есть ли другой класс, который может анализировать дату, или другой способ анализа.

Любое решение поможет мне, но я предпочитаю классы / способы, которые работают с LocalDateTime

1 ответ

Решение

Нет решения

Я не слышал ни об одном классе, библиотеке или базе данных, которые бы представляли пикосекундное разрешение времени.

Как прокомментировал Вопрос и как классно учил д-р Грейс Хоппер, свет проходит только около фута за наносекунду. Свет движется лишь на долю миллиметра за пикосекунду. Это меньше, чем расстояние, пройденное компьютерной технологией для перемещения электрических сигналов. Поэтому такое точное измерение времени вряд ли будет практичным или актуальным в нашей жизни.

усекать

Если пиктограммы на самом деле не нужны вашему приложению, я предлагаю обрезать вашу строку, обрезая любые цифры после первых девяти долей секунды. Тогда разбери как Instant или же LocalDateTime и т.п.

Roll-свой собственный класс

Если вы должны представить пикосекунды, я предлагаю разделить вашу входную строку на две части на основе разделителя десятичных дробей (который в соответствии со стандартом ISO 8601 может быть запятой или точкой FULL STOP, предпочтительно с запятой).

  • Разобрать первую часть как LocalDateTime или же Instant или количество полных секунд с начала эпохи, например 1970-01-01T00:00:00Z.
  • Затем проанализируйте вторую часть как 64-битное длинное целое число.

Вы могли бы написать небольшой класс с именем что-то вроде PicoMomentс parse метод, чтобы представить эти две части внутри. Посмотрите исходный код OpenJDK, чтобы увидеть похожие представления, сделанные внутри в классах java.time.

Если вы идете по этому пути, я предлагаю вам следовать API java.time в качестве модели.

Другие вопросы по тегам