【问题标题】:Formatting time in Android using norwegian locale returns dot and not colon as seperator使用挪威语言环境在 Android 中格式化时间返回点而不是冒号作为分隔符
【发布时间】:2012-12-31 05:33:25
【问题描述】:

在我们的应用程序中格式化本地时间时,我们之前在 .NET 上遇到过这个错误: .NET (3.5) formats times using dots instead of colons as TimeSeparator for it-IT culture? 已在 .NET 4.0 中修复。

当我们测试本地时间的 Android 格式时,我们在挪威语言环境中得到相同的错误,我们得到的时间是“21.00”,而我们在挪威这里使用句点,所以它应该是“21:00”。

DateFormat tf = android.text.format.DateFormat.getTimeFormat(m_activity);

当我测试它时,这发生在 Android 4.2 和 4.0.4 上。这也是bug吗?

而且我看到 Android 在英国也使用 AM/PM,这也有点“不标准”? Formatting time with en_GB locale gives different results in Android and standard Java

【问题讨论】:

  • 请记住,Android 不是 Java,它们甚至不在同一种 VM 上运行。不要指望他们分享常识;)老实说,我什至不知道这是一个错误还是一个功能。
  • @ChristerNordvik : AM/PM 在英国仍然很受欢迎。大多数带有数字时钟/计时器的设备要么默认为 24​​ 小时制,要么可以选择两种 12/24 小时显示。 BBC 网站上的电视节目表(例如)可能是 24 小时制的,但电视上的公告会说“新系列今晚 9 点开始”之类的内容。换句话说,24 小时制对于技术来说是正常的,但 12 小时制仍然是人类日常使用的时钟。抱歉,这对您的问题没有帮助 - 我只是想澄清一下。
  • @Squonk 你是对的,我发现只有在 Android 上将时钟设置为 12 小时制时,Android 才会返回 9:00PM,因此在这方面它是 100% 正确的。据我测试,只有挪威语言环境存在此错误。

标签: android datetime


【解决方案1】:

为什么不用http://docs.oracle.com/javase/1.4.2/docs/api/java/text/NumberFormat.html 自己格式化呢?

显然,在您从 Google 获得明确答复之前,您不会知道这是功能还是错误,即使确实得到确认 - 天知道什么时候会修复它。他们仍然有 2009 年的未决错误!

我建议您使用 NumberFormat 进行“临时”解决方法来解析某些 DateFormat 输出并以这种方式“标准化”它们。节拍等待谷歌解决这个问题:)

【讨论】:

  • 也许是因为这就是 locales 的用途?
  • 显然其中一些已经坏了,我不明白为什么做一个(临时)解决方法会是一个坏主意。这当然是可能的。
  • 作为系统错误的解决方法会很好。您应该在答案中包含它,以及区分是否必须应用变通办法的代码(即当前的语言环境是挪威语)...
  • 这就是我们之前所拥有的。 AM/PM(美国)或 HH:mm 格式(世界其他地区)。我想我只需要恢复到那个代码。也许我可以提交一个错误并希望它在 Android 7.0 中得到修复 :-)
  • a (temporary) workaround 发表于 2012 年,是的,暂时的
【解决方案2】:

来自 Google 工程师的回答: http://code.google.com/p/android/issues/detail?id=42104

“像往常一样,我的建议是不要使用 android.text.format.DateFormat。如果您使用 java.text.DateFormat,它将使用 CLDR 中的格式。

问题在于它不会尊重用户的 12/24 小时偏好。我正在努力尝试将这些信息传递到 libcore,以便我们可以做正确的事情。 (然后我们可以将 frameworks/base 中的重复 API 切换为使用 libcore 实现。)"

【讨论】:

    猜你喜欢
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多