Согласно документации класса SimpleDateFormat, Java
не поддерживает временную детализацию выше миллисекунд в своих шаблонах дат.
Итак, строка даты, например
- 2015-05-09 00: 10: 23.999750900//Последние 9 цифр обозначают наносекунды.
при анализе с помощью шаблона
- yyyy-MM-dd HH: mm: ss.SSSSSSSSS//9 'S' символы
фактически интерпретирует все число после символа .
как (почти 1 миллиард!) миллисекунд, а не как наносекунды, в результате чего дата
- 2015-05-20 21:52:53 UTC
то есть. на 11 дней вперед. Удивительно, но использование меньшего количества символов S
по-прежнему приводит к анализу всех 9 цифр (вместо, скажем, самого левого 3 для .SSS
).
Есть два способа правильно решить эту проблему:
- Использовать предварительную обработку строк
- Используйте обычную реализацию SimpleDateFormat
Будет ли другой способ получить правильное решение, просто поставляя шаблон стандартной реализации SimpleDateFormat
без каких-либо других модификаций кода или строковых манипуляций?