【发布时间】:2017-06-28 04:10:23
【问题描述】:
我想通过解析字符串日期来获得java.util.Date 对象:“2017-06-28 08:30 AM”。此解析用于我的 Android 应用程序。这在许多 Android 版本中没有任何解析异常。像 7.0、4.4.2 和 5.1。但这不适用于Android 6.0。
这是我的错误日志和SimpleDateFormat,
W/System.err: java.text.ParseException: Unparseable date: "2017-06-28 08:30 AM" (at offset 17)
at java.text.DateFormat.parse(DateFormat.java:579)
at biz.spsolutions.peopleedge.RosterClockInActivity.setData(RosterClockInActivity.java:531)
at biz.spsolutions.peopleedge.RosterClockInActivity.onCreate(RosterClockInActivity.java:391)
at android.app.Activity.performCreate(Activity.java:6877)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3208)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3351)
at android.app.ActivityThread.access$1100(ActivityThread.java:222)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1796)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7230)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
这是我的SimpleDateFormat,
SimpleDateFormat currentFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm a")
我也尝试过这种格式,
SimpleDateFormat currentFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm aaa")
我该如何处理这个异常?有什么想法吗?
【问题讨论】:
-
试试这个
2017-06-28 08:30 am -
@Barrier 检查brightec.co.uk/ideas/android-marshmallow-and-simpledateformat 是否有帮助。
-
@MD:好的,我会尽力通知你
-
您的语言环境是什么? (如果不是英语,AM/PM 没有任何意义)
-
您的两种格式都可以在我的计算机上使用(除了您缺少分号)。不过,我应该更喜欢一些更改: (1) 给出明确的语言环境,如
new SimpleDateFormat("yyyy-MM-dd hh:mm a", Locale.ENGLISH);这可能会解决您的问题。 (2) 给出明确的时区:currentFormat.setTimeZone(TimeZone.getTimeZone("Asia/Harbin"));。 (3) 最好,获取ThreeTenABP 并使用Basil Bourque’s answer。
标签: java android string simpledateformat java.util.date