Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSDateFormatter+;dateFormatFromTemplate:options:locale:BUG?_Iphone_Nsdateformatter - Fatal编程技术网

Iphone NSDateFormatter+;dateFormatFromTemplate:options:locale:BUG?

Iphone NSDateFormatter+;dateFormatFromTemplate:options:locale:BUG?,iphone,nsdateformatter,Iphone,Nsdateformatter,请参阅以下代码和输出 NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease]; [dateComponents setYear:2011]; [dateComponents setMonth:1]; [dateComponents setDay:1]; NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:

请参阅以下代码和输出

 NSDateComponents *dateComponents = [[[NSDateComponents alloc] init] autorelease];
 [dateComponents setYear:2011];
 [dateComponents setMonth:1];
 [dateComponents setDay:1];

 NSDate *date = [[NSCalendar currentCalendar] dateFromComponents:dateComponents];

 NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
 [dateFormatter setDateFormat:[NSDateFormatter dateFormatFromTemplate:@"YYYYMMMd" options:0 locale:[NSLocale currentLocale]]];

 NSString *dateString = [dateFormatter stringFromDate:date];

 NSLog(@"Happy New Year: %@", dateString);
你对产出有什么期望

 Happy New Year: Jan 1, 2011
但结果是

 Happy New Year: Jan 1, 2010

怎么了?请帮助…

模板格式字符串应为
@“yyyyMMMd”
(小写“y”表示年份)


大写的“Y”是另一个字母(请参阅)。

+1具体来说,Y是当前一周的年份。2011年1月1日这一周属于2010年,所以YYYY生产2010。@ughoavgfhw:谢谢。我应该指出答案中的差异,因为它可能会让人困惑,因为“Y”在大多数情况下似乎“起作用”。大写字母“Y”表示包含日期的一周从哪一年开始。因此,如果1月1日是星期四,“Y”将给出该周开始的年份(即星期一)。对于1月7日或更高版本,“Y”将给出与“Y”相同的结果,但当然最好首先使用正确的格式字母。@Anna:我认为,准确地说,Y给出的年份带有一些“周数”。因此,12月31日可以是下一年第一周的一部分,因此Y可以给你下一年的时间(尽管这一周从今年开始)