即时通讯使用xcode 4.5(4G182)和iOS 6. NSDateFormatter在iOS 6中显示错误年份,如何解决?
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"YYYY-MM-dd"];
NSString *str = [dateFormatter stringFromDate:[NSDate date]];
NSLog(@"%@ == %@",str,[[dateFormatter dateFromString:str] description]);
打印出来" 2012 -09-14 == 2011 -09-13 16:00:00 + 0000"
答案 0 :(得分:110)
YYYY
与yyyy
不同。
根据this page引用的iOS Date format page;
`y`: Year
`Y`: Year (in "Week of Year" based calendars). This year designation is used in
ISO year-week calendar as defined by ISO 8601, but can be used in
non-Gregorian based calendar systems where week date processing is desired.
May not always be the same value as calendar year.
手术句是最后一句。请改用yyyy
。
有关使用YYYY
时年份值如何以及为何可能出现偏差的详细信息:
ISO周编号年从星期的第一天(星期一)开始 01,并在新的ISO年之前的星期日结束(因此没有 重叠或间隙)。它包括52或53 <完整周。 ISO 周编号年份数与传统编号不同 星期五,星期六和星期日的公历年,或者 周六和周日,或仅仅是一个星期天,在传统的开始 公历年(在以前的ISO结束时) 周编号年份)和周一,周二和周三,或周一 星期二,或者只是一个星期一,在传统格里高利时期结束时 日历年(在下一个ISO周编号的第01周) 年)。对于星期四,ISO周编号年份编号始终为 等于传统的公历年份数。
示例:
12月29日星期一 2008 写成“ 2009 -W01-1”
1月3日星期日 2010 写的是“ 2009 -W53-7”
来自https://en.wikipedia.org/wiki/ISO_8601#Week_dates (添加了粗体样式)