当我试图用NSDateComponent指定一个日期(即生日)时,我意识到我回来的日期还差1小时。
NSDateComponents *birthdayComponents = [[NSDateComponents alloc] init];
[birthdayComponents setDay:5];
[birthdayComponents setMonth:3];
[birthdayComponents setYear:1968];
NSDate *birthday = [[NSCalendar currentCalendar] dateFromComponents:birthdayComponents];
NSLog(@"BIRTHDAY: %@", birthday);
[birthdayComponents release];。
OUTPUT: "BIRTHDAY: 1968-03-04 23:00:00 +0000"我可以通过添加以下内容来纠正这一问题:
[birthdayComponents setHour:1];但奇怪的是,为什么仅仅设置5,3,1968没有给1968-03-05 00:00:00 +0000
发布于 2011-04-07 15:16:29
您没有设置timeZone属性birthdayComponents,因此它默认为UTC。从它创建日期时,日期组件将被转换到本地时区。
发布于 2011-04-07 15:15:46
你现在的时区是什么?)
当您记录日期时,您的输出是在GMT中显示时间,您可能是在您的时区中创建它,即离格林尼治时间1小时。
发布于 2011-04-07 17:03:15
由于日光节约,我遇到了类似的问题--得到0400 vs 0500等等。我通过设置时区和地区来解决这个问题。
// set the locale (for date calculations)
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"es_US"] autorelease];
endDate.locale = locale;https://stackoverflow.com/questions/5583365
复制相似问题