дата разбора java с пикосекундой - PullRequest
0 голосов
/ 29 августа 2018

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

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

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

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

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

1 Ответ

0 голосов
/ 29 августа 2018

Нет решения

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

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

Округление

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

Свернуть свой класс

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

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

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

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

...