Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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
Ios UIDatePicker将一个添加到一年_Ios_Objective C_Uidatepicker - Fatal编程技术网

Ios UIDatePicker将一个添加到一年

Ios UIDatePicker将一个添加到一年,ios,objective-c,uidatepicker,Ios,Objective C,Uidatepicker,我有一个非常奇怪和困惑的问题。我找不到任何关于它的信息,这看起来像是苹果的一个bug,但是如果有人对如何绕过这个问题有建议的话,这将是很有帮助的。 使用UIDatePicker,某些日期会在一年中增加1,似乎永远不会少于12月27日。我回顾了几年,试图找到一种模式。以下是一些例子: Any date picked >= December 28th in 2014 changes to 2015 >= 29th in 2013 -> 2014 >= 30th in 2012

我有一个非常奇怪和困惑的问题。我找不到任何关于它的信息,这看起来像是苹果的一个bug,但是如果有人对如何绕过这个问题有建议的话,这将是很有帮助的。 使用UIDatePicker,某些日期会在一年中增加1,似乎永远不会少于12月27日。我回顾了几年,试图找到一种模式。以下是一些例子:

Any date picked >= December 28th in 2014 changes to 2015
>= 29th in 2013 -> 2014
>= 30th in 2012 -> 2013
2011 (issue doesn't occur)
>= 26th in 2010 -> 2011
>= 27th in 2009 -> 2010
>= 28th in 2008 -> 2009
>= 30th in 2007 -> 2008
=  31st in 2006 -> 2007
2005  (issue doesn't occur)
>= 26th in 2004 -> 2005
>= 28th in 2003 -> 2004
>= 29th in 2002 -> 2003
>= 30th in 2001 -> 2002
=  31st in 2000 -> 2001
=  31st in 1999 -> 2000
>= 27th in 1998 -> 1999
>= 28th in 1997 -> 1998
>= 29th in 1996 -> 1997
=  31st in 1995 -> 1996
1994  (issue doesn't occur)
希望这不会太令人困惑。我似乎找不到一个明确的模式,也不知道如何绕过这个问题。下面是我用来从选择器检索日期的代码:

NSString *date;
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"YYYY-MM-dd"];
date = [formatter stringFromDate:datePicker.date];

在此方面的任何帮助都将不胜感激。

我不知道这是否会改变任何事情,但您可以尝试一下


[格式化程序setDateFormat:@“yyyy:MM:dd”]

我不知道它是否会改变什么,但你可以试试

[格式化程序setDateFormat:@“yyyy:MM:dd”]

在NSDateFormatter中,“Y”和“Y”指定可能从不同日期开始的不同类型的年份。你想要“y”

从:

一个常见的错误是使用YYYY。yyyy指定日历年 鉴于YYYY指定了ISO中使用的年份(“一年中的一周”) 年-周日历。在大多数情况下,yyyy和yyyy产生相同的结果 数字,但它们可能不同。通常,您应该使用 历年

在NSDateFormatter中,“Y”和“Y”指定可能从不同日期开始的不同类型的年份。你想要“y”

从:

一个常见的错误是使用YYYY。yyyy指定日历年 鉴于YYYY指定了ISO中使用的年份(“一年中的一周”) 年-周日历。在大多数情况下,yyyy和yyyy产生相同的结果 数字,但它们可能不同。通常,您应该使用 历年


不要用YYYY,用YYYY。@Anna看起来这就是问题所在,多么愚蠢的错误。我一直认为他们是一样的。如果你发布一个答案,我会选择它。谢天谢地,关于这种恼人的格式差异,已经有好几篇文章发表了。欢迎接受皮埃尔的回答。有关详细信息,请参阅。这是一个有用的页面,我一直在寻找这样的资源,谢谢。不要使用YYYY,使用YYYY。@Anna看起来这就是问题所在,这是一个多么愚蠢的错误。我一直认为他们是一样的。如果你发布一个答案,我会选择它。谢天谢地,关于这种恼人的格式差异,已经有好几篇文章发表了。欢迎接受皮埃尔的回答。请参阅了解详细信息。这是一个有用的页面,我一直在寻找这样的资源,谢谢。谢谢,在Anna指出我应该使用yyyy之后,我实际上发现我应该使用YY。谢谢,在Anna指出我应该使用yyyy之后,我发现我应该使用yyyy。因为
yyyy
代表日历,由完整的周组成。当365 mod 7==1时,每个新年的开始都会有所不同,一年的时间是52或53周。因此,1月1日、2日、3日可以属于过去的一年,12月29日、30日、31日也可以属于下一年。或者换言之:如果自然日历的最后一周的星期四是12月31日或之前,则该周属于日历年的最后一周。如果在1月1日失败,则整个星期属于星期日历中的新年。因为
YYYY
代表日历,所以它由完整的星期组成。当365 mod 7==1时,每个新年的开始都会有所不同,一年的时间是52或53周。因此,1月1日、2日、3日可以属于过去的一年,12月29日、30日、31日也可以属于下一年。或者换言之:如果自然日历的最后一周的星期四是12月31日或之前,则该周属于日历年的最后一周。如果它在1月1日失败,则整个星期属于周日历中的新年。