【问题标题】:SimpleDateFormat: parsing exception on android 6 devicesSimpleDateFormat:在 android 6 设备上解析异常
【发布时间】:2018-06-01 08:58:53
【问题描述】:

我正在尝试接收一个日期字符串。这是字符串的示例:

val date = "10/10/2016 12:00:00 AM" //format month/day/year

现在,我想将此字符串转换为日期。为此,我正在尝试运行以下命令:

val formatter = SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa")
var date = formatter.parse(date)

只要在运行 android 8 的设备上运行此代码,一切都会运行良好。但是,如果我尝试在旧设备上运行(例如:使用 Android 6 的手机),我最终会遇到 ParseException:

Unparseable date: "10/10/2016 12:00:00 AM" (at offset 20)

我注意到从字符串中删除 AM/PM 字符 (aa) 可以解决解析异常。有人可以告诉我这里发生了什么吗?

谢谢

问候, 路易斯

PS:代码在模拟器中运行没有任何问题,但在真实设备中没有问题

【问题讨论】:

  • 从这里:developer.android.com/reference/java/text/… 在示例和模式中,他们只使用一个“a”字符作为 PM/AM 标记,你可以试试吗?
  • 你是从日期选择器还是时间选择器获取时间?
  • 从网络服务获取日期...不幸的是,它被格式化为我展示的格式的字符串...

标签: android date parsing kotlin


【解决方案1】:

试试这个:

val date = "10/10/2016 12:00:00 AM"
val formatter = SimpleDateFormat("MM/dd/yyyy hh:mm:ss a", Locale.US)
var date = formatter.parse(date)

从这里获得:https://developer.android.com/reference/java/text/SimpleDateFormat?hl=pt-br

看起来他们从不使用"aa" 作为"PM/AM" 值,而是使用"a""aaa"

同样来自这个回复:Unable to parse DateTime-string with AM/PM marker 如果您有不同的 PM/AM 符号,他们建议将您的默认 Locale 更改为 Locale.US

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2011-09-12
  • 2019-12-04
  • 1970-01-01
  • 2019-02-04
相关资源
最近更新 更多