Я обновляю свой код для использования java.time.format.datetimeformatter вместо java.text.simpledateformat , а теперь тест не сбои, который не было раньше. Когда я анализирую строку < /p>
2010-12-31 00:00:00
, что, по моему мнению, находится в формате
yyyy-MM-dd HH:mm:ss
Я получаю
2010-12-31T00:00
Где пропали секунды. Это проблема, потому что, например, создание мгновенного из нее не удалось с
java.time.DateTimeException: Unable to obtain Instant from TemporalAccessor: 2010-12-31T00:00 of type java.time.LocalDateTime
Но независимо от того, мне тоже нужны секунды в результате анализа. Я не понимаю, почему они отсутствуют. Я вижу это во многих примерах, таких как https://mkyong.com/java8/java-8-how-to- ... e/образное, я попробовал один и тот же шаблон с java.text.simpledateformat , ожидая, что он тоже потерпел неудачу, потому что я надеялся, что я сделал некоторую ошибку в рисунке. /> Я попробовал с шаблоном, где я фактически удалял секунды, то есть yyyy-mm-dd hh: mm , ожидая, что результат отличается от ранее, вместо этого оба шаблона дают один и тот же результат.2010-12-31T00:00:00
Но анализ приводит к
java.time.format.DateTimeParseException: Text '2010-12-31T00:00:00' could not be parsed at index 10
Этот запущенный пример иллюстрирует проблему:
package main;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Test_yyyy_MM_dd_HH_mm_ss {
public static void main(String[] args) {
String toParse, pattern; LocalDateTime parsed;
//
toParse = "2010-12-31 00:00:00";
pattern = "yyyy-MM-dd HH:mm:ss";
parsed = LocalDateTime.parse(toParse, DateTimeFormatter.ofPattern(pattern)); // Gives "2010-12-31T00:00", why ?
System.out.println("Parsing \"" + toParse + "\" with pattern \"" + pattern + "\" returns " + parsed);
//
toParse = "2010-12-31 00:00";
pattern = "yyyy-MM-dd HH:mm";
parsed = LocalDateTime.parse(toParse, DateTimeFormatter.ofPattern(pattern)); // Gives "2010-12-31T00:00"
System.out.println("Parsing \"" + toParse + "\" with pattern \"" + pattern + "\" returns " + parsed);
//
toParse = "2010-12-31T00:00:00";
pattern = "yyyy-MM-dd HH:mm:ss";
parsed = LocalDateTime.parse(toParse, DateTimeFormatter.ofPattern(pattern)); // DateTimeParseException: Text '2010-12-31T00:00:00' could not be parsed at index 10
}
< /code>
Выход: < /p>
Parsing "2010-12-31 00:00:00" with pattern "yyyy-MM-dd HH:mm:ss" returns 2010-12-31T00:00
Parsing "2010-12-31 00:00" with pattern "yyyy-MM-dd HH:mm" returns 2010-12-31T00:00
Exception in thread "main" java.time.format.DateTimeParseException:
Text '2010-12-31T00:00:00' could not be parsed at index 10
Подробнее здесь: https://stackoverflow.com/questions/796 ... -with-miss