2013-03-18 5 views
0

есть ошибка, когда я пытаюсь выполнить этот код с Joda время:Joda время недопустимый формат

// yyyy-mm-dd, also tried 17-Feb-2013 
String input = "2013-02-17"; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy"); 
DateTime dt = formatter.parseDateTime(input); 

TextView tv = (TextView) findViewById(R.id.tvShow); 
tv.setText("HERE >>> " + dt.toString()); 

какие-либо идеи?

LogCat говорит:

03-18 16:58:14.919: W/System.err(8259): java.lang.IllegalArgumentException: Invalid format: "2013-02-17" is malformed at "13-02-17" 
03-18 16:58:14.919: W/System.err(8259):  at org.joda.time.format.DateTimeFormatter.parseDateTime(DateTimeFormatter.java:871) 
03-18 16:58:14.919: W/System.err(8259):  at com.example.dateformatter.MainActivity.onCreate(MainActivity.java:42) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.Activity.performCreate(Activity.java:5163) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2061) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2122) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.ActivityThread.access$600(ActivityThread.java:140) 
03-18 16:58:14.919: W/System.err(8259):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1228) 
03-18 16:58:14.927: W/System.err(8259):  at android.os.Handler.dispatchMessage(Handler.java:99) 
03-18 16:58:14.927: W/System.err(8259):  at android.os.Looper.loop(Looper.java:137) 
03-18 16:58:14.927: W/System.err(8259):  at android.app.ActivityThread.main(ActivityThread.java:4895) 
03-18 16:58:14.927: W/System.err(8259):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-18 16:58:14.927: W/System.err(8259):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-18 16:58:14.927: W/System.err(8259):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994) 
03-18 16:58:14.927: W/System.err(8259):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) 
03-18 16:58:14.927: W/System.err(8259):  at dalvik.system.NativeStart.main(Native Method) 
03-18 16:58:14.950: D/KeyguardViewMediator(357): setHidden false 
+1

Это не имеет никакого отношения ни к Android, ни к Eclipse. –

ответ

6

Вы попросили его разборе «2013-02-17», как если бы это было в формате «дд/мм/гггг», что это явно не так.

Вы должны указать yyyy-MM-dd как шаблон:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); 

Или, если вам нужно dd/MM/yyyy как шаблон, вы должны предоставить ему текст этой формы, например,

String input = "17/02/2013"; 

В любом случае данные, которые вы предоставляете, должны соответствовать формату, который вы указываете. В конце концов, это все указывает на формат.

См. Документы для DateTimeFormat для обозначения различных букв в формате.

+0

Теперь я понимаю, спасибо! – Mico

0

Попробуйте этот код и введите неправильный формат даты.

String input = "17/02/2013"; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy"); 
DateTime dt = formatter.parseDateTime(input); 
+0

Это тоже не удастся, потому что «-» - это не то же самое, что «/». –

+0

@JonSkeet благодарит за уведомления о моей ошибке сейчас im update мой ответ и извинения за небольшую ошибку !!! – duggu

0

Вы не предполагают, чтобы сделать путаницу в формате

Вариант 1

Строка ввода = "2013-02-17";

DateTimeFormatter formatter = DateTimeFormat.forPattern ("yyyy-MM-dd"); DateTime dt = formatter.parseDateTime (ввод);

TextView tv = (TextView) findViewById (R.id.tvShow); tv.setText («ЗДЕСЬ >>>» + dt.toString());

Вариант 2

входной строки = "17/02/2013";

DateTimeFormatter formatter = DateTimeFormat.forPattern ("dd/MM/yyyy"); DateTime dt = formatter.parseDateTime (ввод);

TextView tv = (TextView) findViewById (R.id.tvShow); tv.setText («ЗДЕСЬ >>>» + dt.toString());

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