Android Joda时间无效格式
我尝试使用Joda时间执行此代码时出错:Android Joda时间无效格式,android,jodatime,Android,Jodatime,我尝试使用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.
// 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
您要求它将“2013-02-17”解析为“dd/MM/yyyy”格式,但显然不是这样
您需要指定yyyy-MM-dd
作为模式:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
或者,如果您需要dd/MM/yyyy
作为模式,则需要为其提供该格式的文本,例如
String input = "17/02/2013";
无论哪种方式,您提供的数据都必须与您指定的格式相匹配。毕竟,这就是指定格式的全部要点
有关格式模式中的各种字母的含义,请参见文档。您要求它将“2013-02-17”解析为“dd/MM/yyyy”格式,但显然不是
您需要指定yyyy-MM-dd
作为模式:
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd");
或者,如果您需要dd/MM/yyyy
作为模式,则需要为其提供该格式的文本,例如
String input = "17/02/2013";
无论哪种方式,您提供的数据都必须与您指定的格式相匹配。毕竟,这就是指定格式的全部要点
有关格式模式中各种字母的含义,请参见文档。如果输入错误的日期格式,请尝试此代码
String input = "17/02/2013";
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy");
DateTime dt = formatter.parseDateTime(input);
如果输入错误的日期格式,请尝试此代码
String input = "17/02/2013";
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy");
DateTime dt = formatter.parseDateTime(input);
你不应该在格式上造成混乱 选项1 字符串输入=“
2013-02-17
”
DateTimeFormatter formatter=DateTimeFormat.forPattern(“yyyy-MM-dd
”);
DateTime dt=格式化程序.parseDateTime(输入)
TextView电视=(TextView)findViewById(R.id.tvShow);
tv.setText(“此处>>>”+dt.toString())
选项2
字符串输入=“17/02/2013
”
DateTimeFormatter formatter=DateTimeFormat.forPattern(“dd/MM/yyyy
”);
DateTime dt=格式化程序.parseDateTime(输入)
TextView电视=(TextView)findViewById(R.id.tvShow);
tv.setText(“此处>>>”+dt.toString()) 您不应该在格式上造成混乱 选项1 字符串输入=“
2013-02-17
”
DateTimeFormatter formatter=DateTimeFormat.forPattern(“yyyy-MM-dd
”);
DateTime dt=格式化程序.parseDateTime(输入)
TextView电视=(TextView)findViewById(R.id.tvShow);
tv.setText(“此处>>>”+dt.toString())
选项2
字符串输入=“17/02/2013
”
DateTimeFormatter formatter=DateTimeFormat.forPattern(“dd/MM/yyyy
”);
DateTime dt=格式化程序.parseDateTime(输入)
TextView电视=(TextView)findViewById(R.id.tvShow);
tv.setText(“此处>>>”+dt.toString()) 顺便说一句,这与Android或Eclipse无关。顺便说一句,这与Android或Eclipse无关。这也会失败,因为“-”和“/”不一样。@JonSkeet感谢通知我的错误,现在我更新我的答案,并为小错误道歉!!!这也会失败,因为“-”和“/”不一样。@JonSkeet谢谢你通知我的错误,现在我更新我的答案,并为我的小错误道歉!!!