2013-11-12 5 views
0

Я пытаюсь использовать следующий код, но я получаю сообщение об ошибке Invalid формат: «12/11/2013»:Joda Формат даты выпуска

String dFrom = ps.utils.gv(request, "dFrom"); 
String dTo = ps.utils.gv(request, "dTo"); 

DateTime dateFrom = new DateTime(dFrom); 
DateTime dateTo = new DateTime(dTo); 

int weeks = Weeks.weeksBetween(dateFrom, dateTo).getWeeks(); 

Может кто-нибудь пожалуйста, пример того, как форматировать переменная date dFrom, которая, как правило, относится к дате в формате UK, такой как 12/11/2013, к дате ISO, такой как 2013-11-12, которая, как я полагаю, поддерживает Joda.

Любая помощь будет высоко ценится :-)

+2

Просьба уточнить, что вы хотите. Вы хотите проанализировать (т. Е. Преобразовать String в DateTime) или формат (т. Е. Преобразовать DateTime в строку)? Вы читали [javadoc] (http://www.joda.org/joda-time/apidocs/org/joda/time/format/DateTimeFormat.html)? Чтение документации является неотъемлемой частью работы программиста. –

ответ

2

Если вы хотите преобразовать формат 12/11/2013 в 2013-11-12, вы можете использовать

DateTimeFormatter dtf = DateTimeFormat.forPatter("dd/MM/yyyy"); // or MM/dd/yyyy ? 
String isoDate = ISODateTimeFormat.date().print(dtf.parseDateTime("12/11/2013")); 

Для формата ISO 2013-11-12 вы можете использовать стандартную дату форматировщик:
ISODateTimeFormat::date()

DateTime date = ISODateTimeFormat.date().parseDateTime("2013-11-12"); 
String dateAsString = ISODateTimeFormat.date().print(date); 

Для формата 12/11/2013, вы должны создать свой собственный форматировщик

DateTimeFormatter dtf = DateTimeFormat.forPatter("dd/MM/yyyy"); // or MM/dd/yyyy ? 
DateTime date = dtf.parseDateTime("12/11/2013"); 
String dateAsString = dtf.print(date); 
Смежные вопросы