根据区域设置格式化部分日期
Posted
技术标签:
【中文标题】根据区域设置格式化部分日期【英文标题】:Format partial date based on locale 【发布时间】:2015-11-06 19:56:22 【问题描述】:我正在尝试显示给定日期的月份和日期,如下所示:
“11 月 5 日”
但允许它根据语言环境更改顺序。
“11 月 5 日”(或其他人所做的任何事情)
我知道我可以像这样简单地对格式进行硬编码:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM d"];
但是,这不会针对语言环境进行更新,我不想硬编码使用一种风格或另一种风格的语言环境列表。
一般来说,当我想显示给定本地的日期时,我知道我可以在格式化程序上使用 setDateType,并从许多预先存在的格式中进行选择,这些格式可以很好地说明当前的语言环境。不幸的是,现有的 NSDateFormatterStyle 都不会以我需要的方式显示。
我能想到的一个解决方案是将日期样式设置为长样式,然后通读 dateFormat 字符串,看看我是先点击“d”还是“M”。然后相应地格式化它。这很容易做到,但看起来真的很hacky。当然有更好的方法来做到这一点。
有什么建议吗?
【问题讨论】:
【参考方案1】:显然 NSDateFormatter dateFormatFromTemplate 是一个东西,它解决了我的问题。
NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMMM d" options:0 locale:[NSLocale currentLocale]];
这将根据您的模板根据当前语言环境正确格式化日期。
【讨论】:
以上是关于根据区域设置格式化部分日期的主要内容,如果未能解决你的问题,请参考以下文章