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