首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一日期的NSDate和NSDateComponent值的差异

同一日期的NSDate和NSDateComponent值的差异
EN

Stack Overflow用户
提问于 2011-04-06 01:06:06
回答 1查看 884关注 0票数 0

我创建了一个简单的函数来获取一周的第一天和最后一天。查看NSLog输出,我发现同一日期的NSDate描述符和组件日期返回了不同的值,为什么?

这里的NSLog输出:

代码语言:javascript
复制
NSDATE: 2011-04-03 22:00:00 +0000, DAY COMPONENT: 4 
NSDATE: 2011-04-09 22:00:00 +0000, DAY COMPONENT: 10 

正如您所看到的,第一行的NSDATE为3,day分量为4,第二行的NSDATE为9和10。

代码如下:

代码语言:javascript
复制
NSDate *date = [NSDate date]; //Today is  April 5th 2011
NSCalendar *cal =[[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];

[cal setFirstWeekday:2]; //My week starts from Monday

//DEFINE BEGINNING OF THE WEEK
NSDate *beginningOfWeek = nil;
[cal rangeOfUnit:NSWeekCalendarUnit startDate:&beginningOfWeek interval:nil forDate:date];
NSDateComponents *beginComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:beginningOfWeek];

//DEFINE END OF THE WEEK, WITH 6 days OFFSET FROM BEGINNING
NSDateComponents *offset = [[NSDateComponents alloc]init];
[offset setDay:6];
NSDate *endOfWeek = [cal dateByAddingComponents:offset toDate:beginningOfWeek options:0];
NSDateComponents *endComponents = [cal components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSWeekCalendarUnit | NSWeekdayCalendarUnit) fromDate:endOfWeek];

NSLog(@"NSDATE: %@, DAY COMPONENT: %d",beginningOfWeek, [beginComponents day]);
NSLog(@"NSDATE: %@, DAY COMPONENT: %d",endOfWeek,       [endComponents day]);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-06 01:19:12

您的日期打印时区为+0000 (协调世界时),而您的NSCalendar实例(以及您的NSDateComponents)使用的是设备的默认时区(我猜是UTC+2)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5555627

复制
相关文章

相似问题

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