在 iOS 开发中,我碰到了奇怪的问题。
[dateFormatter stringFromDate:aDate];
dateFormatter 是一个 NSDateFormatter 对象。
aDate 是一个 NSDate 对象,它的值为 2015-12-30 00:00。
这段代码是把这个 NSDate 转化为 NSString。
我获得的结果是让人吃惊的:“2016-12-30 00:00” !!!
再次实验,这次 NSDate 对象的值改为 2017-12-30 00:00。
执行结果为:“2017-12-30 00:00”。
看到这里我就抓狂了,难道 Apple 的代码会有如此明显的错误?
经过一段测试以及网上搜索,终于找到了原因。
原来是 NSDateFormatter 对象的格式设置出现了错误。
我使用的是 “YYYY-MM-dd”。改为 “yyyy-MM-dd”。问题解决!!!
那么 YYYY 和 yyyy 区别是 ?yyyy 是标准的年,而 YYYY 是 ISO year-week calendar 的年。
参考链接:
http://stackoverflow.com/questions/15133549/difference-between-yyyy-and-yyyy-in-nsdateformatter
http://stackoverflow.com/questions/12423179/nsdateformatter-show-wrong-year