android - Joda 时间格式无效

标签 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.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";

无论哪种方式,您提供的数据都必须符合您指定的格式。毕竟,这就是指定格式的全部意义所在。

请参阅 DateTimeFormat 的文档格式模式中的各种字母的含义。

关于android - Joda 时间格式无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15472981/

相关文章:

Android MediaPlayer.start 不启动

Android TabLayout固定模式但权重不同

java - hibernate 日期转换

java - 将自纪元以来的毫秒时间转换为 "mm/dd/yy"

java - Joda 日期时间问题与年份

java - 如何从 Android studio 打开相关应用程序中的社交媒体链接?

android - 防止popBackStack中多次添加同一个Fragment

java - Joda Time 给出了不正确的时区时间

scala json4s,无法转换LocalDate

android - Android 服务中的 Hilt 注入(inject)