2015-11-06 83 views
1

我想显示给定日期的月份和日期,就像这样:格式部分日期基于区域

“11月5日”

但允许更改顺序基于语言环境。

“11月5日”(或任何其他人做)

我知道我可以简单地硬编码格式,象这样:

NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 
[formatter setDateFormat:@"MMMM d"]; 

但是,这并不更新区域设置,而且我不想对使用一种样式或另一种样式的区域设置进行硬编码。

通常,当我想为给定的本地显示日期时,我知道我可以在格式化程序上使用setDateType,并从很多预先存在的格式中选择,这些格式将很好地解释当前语言环境。不幸的是,现有的NSDateFormatterStyle都不会显示我需要的方式。

我已经能够想到的一种解决方案是将日期样式设置为长样式,然后通过dateFormat字符串进行读取,并查看是否先打“d”或“M”。然后相应地格式化它。这将是相当容易做到的,但它看起来很黑。当然有更好的方法来做到这一点。

有什么建议吗?

回答

1

显然NSDateFormatter dateFormatFromTemplate是一件事情,它解决了我的问题。

NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMMM d" options:0 locale:[NSLocale currentLocale]]; 

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