DateTimeFormatter с «Yyyy-MM-DD HH: MM: SS».JAVA

Программисты JAVA общаются здесь
Anonymous
DateTimeFormatter с «Yyyy-MM-DD HH: MM: SS».

Сообщение Anonymous »

Я обновляю свой код для использования 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

Вернуться в «JAVA»