当前位置:  开发笔记 > 编程语言 > 正文

NSDateFormater - 2015年和2016年同年返回

如何解决《NSDateFormater-2015年和2016年同年返回》经验,为你挑选了2个好方法。

我已经发现了一个奇怪的行为NSDateFormatterLLLL YYYY格式,它返回一年2015年两个2015年1月1日2016年1月1日的日期.

我错过了什么或者是格式化程序类中的错误吗?

代码重现:

NSDateFormatter *formatter = [NSDateFormatter new];
formatter.dateFormat = @"LLLL YYYY";

NSDate *d1 = [NSDate dateWithTimeIntervalSince1970:1420070400]; // 2015-01-01T00:00:00Z
NSDate *d2 = [NSDate dateWithTimeIntervalSince1970:1451606400]; // 2016-01-01T00:00:00Z

NSLog(@"%@ => %@", d1, [formatter stringFromDate:d1]); // 2015-01-01 00:00:00 +0000 => January 2015
NSLog(@"%@ => %@", d2, [formatter stringFromDate:d2]); // 2016-01-01 00:00:00 +0000 => January 2015

这两个案例都打印出"2015年1月",但在第二种情况下我希望"2016年1月".



1> Michael..:

你应该使用yyyy而不是YYYY,因为YYYY是不同的东西......

来自文档的更深入的解释:

一个常见的错误是使用YYYY.yyyy指定日历年,而YYYY指定ISO年度日历中使用的年份("年度周").在大多数情况下,yyyy和YYYY会产生相同的数字,但它们可能会有所不同.通常,您应该使用日历年.



2> Zachary Espi..:

你应该使用yyyy,而不是YYYY.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有