1

我正在尝试创建日期为“1 oct 2013 8:00:00”的 NSDate 对象。我使用了以下代码

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components = [[NSDateComponents alloc] init];
[components setYear:2013];
[components setMonth:10];
[components setDay:1];
[components setHour: 8];
[components setMinute: 00];
[components setSecond: 00];
NSDate *date = [calendar dateFromComponents:components];

但是当我打印日期时它给出了错误的时间“2013-10-01 02:30:00 +0000”

4

1 回答 1

9

发生这种情况是因为时区:您处于印度标准时间 (IST) 区域,比 GMT 晚 5 小时 30 分钟。当您从组件设置NSDate为时,它使用您的时区,因此8:00结果会被调整为具有正确的 GMT 时间。如果您想将时间设置为GMT,请将您的组件设置为 GMT:02:30NSDate08:00timeZone

[components setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
于 2013-09-14T11:20:33.857 回答