首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从NSDate到NSDateComponent短1小时?

从NSDate到NSDateComponent短1小时?
EN

Stack Overflow用户
提问于 2011-04-07 15:12:39
回答 3查看 1.2K关注 0票数 1

当我试图用NSDateComponent指定一个日期(即生日)时,我意识到我回来的日期还差1小时。

代码语言:javascript
复制
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];

代码语言:javascript
复制
OUTPUT: "BIRTHDAY: 1968-03-04 23:00:00 +0000"

我可以通过添加以下内容来纠正这一问题:

代码语言:javascript
复制
[birthdayComponents setHour:1];

但奇怪的是,为什么仅仅设置5,3,1968没有给1968-03-05 00:00:00 +0000

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-07 15:16:29

您没有设置timeZone属性birthdayComponents,因此它默认为UTC。从它创建日期时,日期组件将被转换到本地时区。

票数 2
EN

Stack Overflow用户

发布于 2011-04-07 15:15:46

你现在的时区是什么?)

当您记录日期时,您的输出是在GMT中显示时间,您可能是在您的时区中创建它,即离格林尼治时间1小时。

票数 1
EN

Stack Overflow用户

发布于 2011-04-07 17:03:15

由于日光节约,我遇到了类似的问题--得到0400 vs 0500等等。我通过设置时区和地区来解决这个问题。

代码语言:javascript
复制
// set the locale (for date calculations)
NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:@"es_US"] autorelease];
endDate.locale = locale;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5583365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档