NSDateFormatter 没有显示完整的月份名称,只有一位数字
Posted
技术标签:
【中文标题】NSDateFormatter 没有显示完整的月份名称,只有一位数字【英文标题】:NSDateFormatter not showing full month name, only single digit number 【发布时间】:2012-08-24 19:32:20 【问题描述】:不确定是什么问题,但我得到的不是月份名称“七月”,而是“07”。
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setLocale:[NSLocale systemLocale]];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
我尝试过 M、MM、MMM、MMMM,它们都给了我一个数字,而不是月份名称,尽管前导 0 的数量不同。
【问题讨论】:
我认为这行是问题.. [dateFormat setLocale:[NSLocale systemLocale]];不知道您使用systemLocale
的目的是什么,但您可以尝试使用currentLocale
而不是systemLocale
【参考方案1】:
原来是第二行 setLocale
的问题。我假设当手动设置locale
时系统不会默认使用英文月份名称?我住在讲英语的locale
,但也许没关系。
无论如何,不设置区域设置可以解决月份名称问题。
dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setTimeZone:[NSTimeZone localTimeZone]];
[dateFormat setDateFormat:@"MMMM dd, h:mm a"];
【讨论】:
【参考方案2】:问题在于语言环境,而不是格式。看看这个:
http://waracle.net/mobile/iphone-nsdateformatter-date-formatting-table/
基本上,“MMMM”将为您提供月份的全名。
【讨论】:
【参考方案3】:-systemLocale
不是你想要的。如果没有其他语言环境适合,它会返回一个备用语言环境。使用-currentLocale
获取用户当前的语言环境。
还有:
您应该使用NSDateFormatter
的+dateFormatFromTemplate:options:locale:
方法来获取正确的日期格式。在某些语言中,日期在月份之前,等等,反之亦然。
【讨论】:
以上是关于NSDateFormatter 没有显示完整的月份名称,只有一位数字的主要内容,如果未能解决你的问题,请参考以下文章
使用 NSDateFormatter 格式化月份和年份返回无效日期
NSDateFormatter 无法解析德语月份 March/June/Jul 的三个字母缩写
NSDateFormatter 无法解析德语月份 March/June/Jul 的三个字母缩写