UIDatePicker每年添加一个

时间:2014-01-21 19:55:56

标签: ios objective-c uidatepicker

我有一个非常奇怪和令人困惑的问题。我找不到任何关于它的东西,这似乎是苹果的一个错误,但如果有人建议如何解决这个问题会有所帮助。 有些日期在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];

对此的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:8)

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

[formatter setDateFormat:@"yyyy:MM:dd"];

答案 1 :(得分:1)

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

来自NSDateFormatter documentation

  

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