DatePicker在1月1日返回错误的年份

时间:2011-08-09 00:44:42

标签: objective-c

我的应用中有一个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];

1 个答案:

答案 0 :(得分:3)

如果daycount与您在评论中所说的真实0一样,则可能是您问题的根源。 day对象的NSDateComponents属性应该在日历定义的自然范围内。在格里高利历中,即1-31。如果这一天超出了那个范围,那么单位开始环绕,你可能无法得到你想要的结果。