【问题标题】:SimpleDateFormat.parse not working since lollipop 5.0 Android update自棒棒糖 5.0 Android 更新以来,SimpleDateFormat.parse 无法正常工作
【发布时间】:2015-04-11 23:28:17
【问题描述】:

我刚刚在我的安卓手机上安装了升级版 Lollipop,这不再起作用了:

String time = "Apr 07 10:35:27 CEST 2015";
long l1 = new SimpleDateFormat("MMM dd HH:mm:ss zzz yyyy").parse(time).getTime();

long l2 = new SimpleDateFormat("MMM dd HH:mm:ss zzz yyyy",
                Locale.ENGLISH).parse(time).getTime();

两者都不起作用:

W/System.err(11473): java.text.ParseException: Unparseable date: "avr. 07 10:35:27 CEST 2015" (at offset 17)

问题是 SimpleDateFormat 在我安装 5.0 后现在返回 GMT+02:00 而不是以前的 CEST

【问题讨论】:

  • 发布的代码不会产生给定的错误。 avr. 是 a/ 法语和 b/ 不是 MMM 令牌识别的格式。 Avr 会,如果您将 Locale.FRENCH 传递给格式化程序。
  • 我正在使用我不知道的法国电话,无论如何 Locale.FRENCH 不能解决任何问题。问题是我安装 5.0 后 CEST 变为 GMT+02:00
  • 你从哪里得到这个日期?
  • CEST became GMT+02:00我不明白你的意思

标签: android date


【解决方案1】:

“CEST”不是 Android 使用的 CLDR 可识别的时区模式。可能是因为SimpleDateFormat是从遵循Java自己的时间格式标准的Apache Harmony中提取出来的,所以之前就被认可了。

【讨论】:

  • 所以我应该考虑只使用“GMT+02:00”模型而不考虑 CEST 吗?我唯一的目标是获得精确的日期。
  • 您可能会觉得这很有帮助:stackoverflow.com/questions/2532729/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2015-01-22
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多