首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这是使用NSDate为NSDateComponents添加天数的正确方法吗?

这是使用NSDate为NSDateComponents添加天数的正确方法吗?
EN

Stack Overflow用户
提问于 2012-02-17 11:35:30
回答 1查看 1.6K关注 0票数 0

我正在使用下面的方法从NSDate中添加或减去天数。

当我记录这些值时,有时会得到一个意想不到的结果。

以下是其中一个案例:

代码语言:javascript
运行
复制
//This adds X days to the current Date and returns to the user
+(NSDate*)getRelativeDateInDays:(NSInteger)days forDate:(NSDate*)date{


    NSCalendar *gregorian = [[NSCalendar alloc]initWithCalendarIdentifier:NSGregorianCalendar];
    NSDateComponents *weekdayComponents = [[NSDateComponents alloc] init];
    [weekdayComponents setDay:days];
    NSDate *newDate = [gregorian dateByAddingComponents:weekdayComponents toDate:date options:0];
    [gregorian release];
    [weekdayComponents release];
    NSLog(@"start Date : %@ End Date %@",date,newDate);

返回newDate;}

案例1:

2012-02-17 06:28:14.474申请2906:707开始日期: 2012-03-08 11:26:23 +0000

案例2:

2012-02-17 06:29:00.631申请2906:707开始日期: 2012-03-10 11:26:23 +0000

在案例1中,当我将一天的时间添加到2012-03-08 11:26:23 +0000时,我得到了2012-03-09 11:26:23 +0000。

但是当我把一天加到2012-03-10 11:26:23 +0000时,我得到了2012-03-11 :26:23 +0000。

1小时额外减少。这里有什么问题?是否有人曾面对这个问题?

EN

回答 1

Stack Overflow用户

发布于 2012-02-17 11:42:59

这是因为日光节约时代--美国的夏令储蓄从3月11日开始。

编辑:

您可以通过将输入的日期转换为date components对象,更改date组件(时间不受影响),然后转换回NSDate来解决这个问题。

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

https://stackoverflow.com/questions/9327525

复制
相关文章

相似问题

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