提问人:tombuarts 提问时间:8/9/2011 最后编辑:Dave DeLongtombuarts 更新时间:8/9/2011 访问量:194
DatePicker 返回 1 月 1 日的错误年份
DatePicker returns wrong year for Jan 1
问:
我的应用程序中有一个 DatePicker 控件。例如,如果我尝试选择 2011 年 1 月 1 日,它将返回 2010 年 1 月 1 日。如果我选择 2040 年 1 月 1 日,则会得到 2039 年 1 月 1 日,依此类推。12 月 31 日和 1 月 2 日给了我选择的年份,所以这只是 1 月 1 日的问题。我已经检查了我的代码,我没有看到我搞砸这一年的任何地方。有什么想法吗?
代码如下:
datenow = chooseDate;
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:(int)daycount];
datenow = [calendar dateByAddingComponents:components toDate:datenow options:0];
dateComponents = [calendar components:unitFlags fromDate:datenow];
year = [dateComponents year];
month = [dateComponents month];
day = [dateComponents day];
hour = [dateComponents hour];
min = [dateComponents minute];
答:
3赞
Dave DeLong
8/9/2011
#1
如果真的像你在评论中说的那样,那么这可能是你问题的根源。对象的属性应在日历定义的自然范围内。在公历的情况下,即 1-31。如果这一天超出了这个范围,那么单位就会开始环绕,你可能不会得到你想要的结果。daycount
0
day
NSDateComponents
评论
0赞
tombuarts
8/10/2011
我尝试了你的建议,但没有区别。我删除了代码的 daycount 部分,只使用了组件,我仍然得到了相同的结果。谢谢你试一试,我真的以为你有解决方案。
1赞
benzado
8/10/2011
Dave 在将 NSDateComponents 用作增量 () 的情况下是不正确的,就像在上面的代码中一样。 在这种情况下,仅表示不要更改月份的日期。dateByAddingComponents:
daycount == 0
评论