我的应用中有一个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];
答案 0 :(得分:3)
如果daycount
与您在评论中所说的真实0
一样,则可能是您问题的根源。 day
对象的NSDateComponents
属性应该在日历定义的自然范围内。在格里高利历中,即1-31。如果这一天超出了那个范围,那么单位开始环绕,你可能无法得到你想要的结果。