我正在尝试使用日期“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”
答案 0 :(得分:9)
这是因为时区:您处于印度标准时间(IST)区域,该区域落后于格林威治标准时间5小时30分钟。当您从组件中将NSDate
设置为8:00
时,它会使用您的时区,因此结果会调整为02:30
,以便NSDate
具有正确的GMT时间。如果您想将时间设置为08:00
GMT,请将您的组件“timeZone
设置为GMT:
[components setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];