Разбор даты Java с точностью до микросекунды или наносекунды
СогласноДокументация класса SimpleDateFormat, Java
не поддерживает детализацию времени свыше миллисекунд в своих шаблонах дат.
Итак, строка даты, как
2015-05-09 00: 10: 23.999750900 // Последние 9 цифр обозначают наносекундыкогда анализируется через шаблон
гггг-мм-дд чч: мм: сс.ссссссссс // 9 символов 'S'на самом деле интерпретирует целое число после.
символ как (почти 1 миллиард!) миллисекунд, а не как наносекунд, что приводит к дате
то есть более 11 дней вперед. Удивительно, но с использованием меньшего количестваS
символы по-прежнему приводят к анализу всех 9 цифр (вместо, скажем, самой левой 3 для.SSS
).
Есть 2 способа правильно решить эту проблему:
Использовать предварительную обработку строкИспользуйте пользовательскую реализацию SimpleDateFormatБудет ли какой-то другой способ получить правильное решение, просто предоставив образец для стандарта?SimpleDateFormat
реализация, без каких-либо других модификаций кода или манипуляции со строками?