NSDate对象显示错误的时间

时间:2013-09-14 11:12:26

标签: iphone ios objective-c

我正在尝试使用日期“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”

1 个答案:

答案 0 :(得分:9)

这是因为时区:您处于印度标准时间(IST)区域,该区域落后于格林威治标准时间5小时30分钟。当您从组件中将NSDate设置为8:00时,它会使用您的时区,因此结果会调整为02:30,以便NSDate具有正确的GMT时间。如果您想将时间设置为08:00 GMT,请将您的组件“timeZone设置为GMT:

[components setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
相关问题