2015-11-20 4 views
0

Работа с приложением, которое сохраняет дату для определенного курса, то есть дату окончания каждого создаваемого курса.Анализ даты не прошел

Эта услуга принимает дату в формате MM/dd/yyyy.

Например,

course = { 
    "courseName": "My Course", 
    "endDate": "01/10/2015" 
} 

Который должен получить разобран как "01/10/2015" то есть "10 января 2015" в службе.

Но были случаи, когда дата была получена в неправильном формате, т.е. дд/мм/гггг

course = { 
    "courseName": "My Course", 
    "endDate": "13/01/2015" 
} 

который получил разобрано как «01/01/2016» т.е. «01 января 2016 года».

выше синтаксический анализ осуществляется с помощью

String d = "13/01/2015"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
Date date = format.parse(d); 

Мой вопрос, это есть способ, которым я могу вернуть первоначальную дату, перевернув неправильно разобранную дату?

Я попытался разобрать его, используя шаблон «dd/MM/yyyy», но я получил «01/01/2016».

+2

Отвернув что? DateFormat может идти в обоих направлениях, но если вы неправильно проанализировали дату как 1 января, вы не сможете преобразовать ее в то, что она должна была быть, если у вас все еще есть исходная строка, которая была проанализирована неправильно. – khelwood

+1

_ "01/10/2015" i.e. "01 января 2015" _ вы имеете в виду 10 января 2015 года или 01 октября 2015 года? – naurel

+0

«01/10/2015», т. Е. «10 января 2015 года». Виноват. Я отредактировал вопрос. – Aakash

ответ

3

Проблема в том, что после того, как вы получили разобранное значение «01/01/2016», откуда вы знаете, было ли оригинальное значение «01/01/2016» или неправильным «13/01/2015», , Вы этого не сделаете.

Все, что я могу предложить, это в будущем, так это то, что вы setLenient(false), тогда SimpleDateFormat будет бросать соответствующий ParseException, когда он сталкивается с чем-то вроде этого.

String d = "13/01/2015"; 
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy"); 
format.setLenient(false) 
Date date = format.parse(d); // throws ParseException 
+0

Спасибо, помните об этом. – Aakash

Смежные вопросы