我正在尝试使用NSCalendar和NSDateComponents创建一个NSDate:
NSCalendar *calendar = [NSCalendar currentCalendar];
[calendar setTimeZone:[NSTimeZone localTimeZone]];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setDay:[self.day intValue]];
[components setMonth:[self.month intValue]];
[components setYear:[self.year intValue]];
self.date = [calendar dateFromComponents:components];
当日,月,年为: 9/31/2011 NSDate适用于 10/1/2011 。我在测试后设置NSCalendar的时区,但没有改变NSDate。我也试过
[calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
这让我回来了 2011年9月30日。有人在我计算这个问题的方式上看到了错误吗?
感谢。
答案 0 :(得分:3)
那么,9月31日真的是10月10日。
但是组件必须知道要在哪个日历中工作。以下代码来自apple
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:6];
[comps setMonth:5];
[comps setYear:2004];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];