如何确定区域设置的日期格式是月/日还是日/月?
在我的 iPhone 应用程序中,我希望能够确定用户区域设置的日期格式是月/日(即 1/5 表示 1 月 5 日)还是日/月(即 5/1 表示 1 月 5 日)。我有一个自定义的NSDateFormatter
,它不使用NSDateFormatterShortStyle
(11/23/37)等基本格式之一。
在理想的情况下,我想使用 NSDateFormatterShortStyle,但不显示年份(仅显示月份和日期#)。实现这一目标的最佳方法是什么?
In my iPhone app, I'd like to be able to determine if the user's locale's date format is Month/Day (i.e. 1/5 for January fifth) or Day/Month (i.e. 5/1 for January fifth). I have a custom NSDateFormatter
which does not use one of the basic formats such as NSDateFormatterShortStyle
(11/23/37).
In an ideal world, I want to use NSDateFormatterShortStyle, but just not display the year (only month & day#). What's the best way to accomplish this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您想使用 NSDateFormatter 的 +dateFormatFromTemplate:options:locale:
这是一些 Apple 示例代码:
You want to use NSDateFormatter's +dateFormatFromTemplate:options:locale:
Here is some Apple sample code:
在示例代码的基础上,这里有一个单行代码来确定当前区域设置是否是第一天(注意。我删除了“y”,因为这与我们这个问题无关):
注意。
dateFormatFromTemplate
的文档指出“返回的字符串可能不完全包含模板中给出的那些组件,但可能(例如)应用了特定于区域设置的调整。”鉴于此,有时测试可能会由于未知格式而返回 FALSE(这意味着在不清楚时默认为月份优先)。自行决定您喜欢哪种默认设置,或者是否需要增强测试以支持其他区域设置。Building on the sample code, here's a one-liner to determine if the current locale is day-first (nb. I dropped the 'y' as that doesn't concern us for this question):
NB. The docs for
dateFormatFromTemplate
state that "The returned string may not contain exactly those components given in template, but may—for example—have locale-specific adjustments applied." given this, sometimes the test may return FALSE due to an unknown format (meaning it defaults to month-first when unclear). Decide for yourself which default you prefer, or if you need to enhance the test to support additional locales.