根据区域设置格式化部分日期

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]];

这将根据您的模板根据当前语言环境正确格式化日期。

【讨论】:

以上是关于根据区域设置格式化部分日期的主要内容,如果未能解决你的问题,请参考以下文章

如何根据区域设置中定义的语言本地化 DatePicker 的日期格式

如何替换EXCEL中日期的格式

如何替换EXCEL中日期的格式

怎么更改电脑日期格式

Win7系统怎么更改日期,时间和数字格式

在 Excel 中保存为 CSV 会丢失区域日期格式