Формат даты — Java

#java #datetime

Вопрос:

Я хочу принять формат даты в соответствии с ISO (не могу вспомнить, какой именно)…

 2009-09-17T13:03:00
 

Как мне это сделать? В настоящее время я использую SimpleDateФормат, но когда я запускаю модульный тест для него, он завершается неудачей.

 DateFormat df = SimpleDateFormat("yyyy-MM-ddTHH:mm:ss");
 

Модульный тест передает ему эту строку:

 String test1 = "2009-09-17T13:07:01";
 

Комментарии:

1. Можем ли мы просмотреть код вашего модульного теста, а также метод, который тестируется?

2. На самом деле чтение сообщений об ошибках, по-видимому, утраченное искусство…

3. Рассматриваемый стандарт ISO-ISO 8601

4. Понижающий голос немного резковат. «Незаконный символ Паттена Т» не объясняет, как устранить проблему.

5. Тем не менее, он точно указывает вам, в чем заключается проблема, и просмотр API do (который действительно говорит вам, что делать) является очевидным следующим шагом. И если вы не знаете, как интерпретировать сообщение об ошибке, по крайней мере, включите его в свой вопрос . Или предоставьте фактически отказывающий код, а не искалеченные фрагменты, которые даже не будут компилироваться.

Ответ №1:

Параметр SimpleDateFormat должен быть «гггг-ММ-дд’т’Ч:мм:сс».

С уважением.

Ответ №2:

Вам нужно заключить букву Т в одинарные кавычки

Ответ №3:

Ваш формат неверен. Это должно быть что-то вроде этого,

 SimpleDateFormat isoFormat = 
    new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");   
 

Ответ №4:

Простое решение-удалить букву «Т» 😉

 ...      
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");

Date date = df.parse("2009-09-17T13:07:01".replace("T",""))
 

С уважением, Ян