iphone - 如何在 iPhone 上本地化 "Timer"

标签 iphone ios

我需要在 iPhone 上以“hh:mm:ss”格式显示计时器,但希望将其本地化。例如,芬兰在时间组件 (hh.mm.ss) 之间使用句点而不是冒号。如果我要处理“时间”但我需要显示比 24 大得多的小时数,Apple 的 NSDateFormatter 就可以解决问题。

我无法让 NSDate/NSDateFormatter 工作,因为当你用秒来做一个时......

NSDate *aDate = [NSDate dateWithTimeIntervalSinceReferenceDate:aTotalSeconds];

... 每 86,400 秒(一天的值(value))NSDate 会自动递增日期,然后将小时、分钟和秒归零。我需要让它在任意秒数内工作而不会翻滚。例如,对于 86,401 秒,我想显示 24:00:01(或芬兰的 24.00.01)。

我的代码可以很好地管理总秒数,所以我遇到的唯一问题是显示。一个简单的...

[NSString stringWithFormat:@"%d%@%d%@%d", hours, sepString, mins, sepString, secs]

... 如果我能找到一种方法来获得本地化的“sepString”(时间组件分隔符),那将是可行的。 NSLocale 好像没有这个。

想法?

最佳答案

以下是有关此主题的信息,供其他人引用,他们可能正在尝试弄清楚世界上不同地区使用什么字符来分隔时间分量。我在我的 iPhone - iOS 版本 4.1 (8B117) 上检查了所有“区域格式”设置,我发现除了七个区域外,所有区域都使用冒号 (hh:mm)。这是其他人(他们的 NSLocaleCountryCode 在大括号中)。

使用句点,hh.mm

• 丹麦语(丹麦){DK}
• 芬兰语(芬兰){FI}
• 塞尔维亚黑山语(西里尔字母){ME}
• 塞尔维亚黑山语(拉丁语){ME}
• 塞尔维亚语(西里尔字母){RS}
• 塞尔维亚语(拉丁语){RS}

使用破折号,hh-mm

• 马拉地语(印度){IN}

请注意,印度(不是马拉地语印度)也有国家代码 IN,并且使用冒号。因此,仅检查国家代码是不够的,您还必须查看其他 NSLocale 字段。我还没有遍历所有字段,但我怀疑 NSLocaleScriptCode 或 NSLocaleVariantCode 可能会区分它们。这种复杂性就是为什么 Apple 应该在 SDK 中向我们公开这个字符。我确实在 Radar 中记录了它,所以如果你同意,请也提出请求,请求的数量对他们决定做什么很重要。

关于iphone - 如何在 iPhone 上本地化 "Timer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4109587/

相关文章:

android - iOS/Android 上的信标通知

iphone - 无法在应用程序退出 iOS 时重置亮度

ios - 无法在 iPhone 上安装 Provisioning Profiles (iOS 8 beta 4/Xcode 6 Beta 4)

ios - 如何让 switch case 在 Swift 中不出现多次?

iphone - 在 iPhone、BlackBerry、Android、WP7 上访问基于 SSL 的网站

iphone - 更好地使用图像或以编程方式自定义 UINavigationBar?

ios - Node.js 中的异常 ETIMEDOUT

ios - 检测到 13.56Mhz 时禁用 Apple Pay UI

iphone - NSString 到 NSDate 不适用于 iDevice

iphone - 检测轻量级核心数据迁移