我正在尝试显示给定日期的月份和日期,如下所示:
“11月5日”
但允许它根据区域设置更改顺序。
“11月5日”(或其他人做的事)
我知道我可以简单地对这些格式进行硬编码:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMM d"];
但是,这不会更新语言环境,我不想硬编码使用一种风格或另一种风格的语言环境列表。
通常,当我想显示给定本地的日期时,我知道我可以在格式化程序上使用setDateType,并从许多预先存在的格式中选择,这些格式可以很好地解释当前的区域设置。不幸的是,现有的NSDateFormatterStyle都不会显示我需要的方式。
我能够想到的一个解决方案是将日期样式设置为长样式,然后读取dateFormat字符串,看看我是先点击'd'还是'M'。然后相应地格式化它。这样做相当容易,但看起来真的太烂了。当然有更好的方法来做到这一点。
有什么建议吗?
答案 0 :(得分:1)
显然NSDateFormatter是dateFormatFromTemplate,它解决了我的问题。
NSString *format = [NSDateFormatter dateFormatFromTemplate:@"MMMM d" options:0 locale:[NSLocale currentLocale]];
这将根据当前区域设置在模板后正确格式化日期。