当尝试使用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 ?
答案 0 :(得分:2)
您没有设置birthdayComponents的timeZone属性,因此默认为UTC。从中创建日期时,日期组件将转换为您当地的时区。
答案 1 :(得分:1)
您目前的时区是多少? ;)
当您记录日期时,您的输出显示GMT时间,您可能在您的时区创建它,这是GMT一小时。
答案 2 :(得分:0)
由于夏令时,我遇到了类似的问题 - 获得了0400 vs 0500等等。我通过设置时区和地区来解决这个问题。
// set the locale (for date calculations)
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"es_US"] autorelease];
endDate.locale = locale;