Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSCalendar和NSDateComponent的周起始日期不正确_Ios_Objective C_Datetime - Fatal编程技术网

Ios NSCalendar和NSDateComponent的周起始日期不正确

Ios NSCalendar和NSDateComponent的周起始日期不正确,ios,objective-c,datetime,Ios,Objective C,Datetime,我的问题是,在我的应用程序中,我经常显示每周的事件(从周一开始的一周),在“下一周”按钮上,我将计算下周的日期,我的工作正常,但对于特定的一天,它没有返回正确的值 下面是我的代码 对于当前的周末日期,我将添加一天以获得下周的开始日期 NSDateComponents *dateComponet = [[NSDateComponents alloc] init]; [dateComponet setDay:days]; return [[self getCustomCalenda

我的问题是,在我的应用程序中,我经常显示每周的事件(从周一开始的一周),在“下一周”按钮上,我将计算下周的日期,我的工作正常,但对于特定的一天,它没有返回正确的值

下面是我的代码

对于当前的周末日期,我将添加一天以获得下周的开始日期

 NSDateComponents *dateComponet = [[NSDateComponents alloc] init];
    [dateComponet setDay:days];
    return [[self getCustomCalendar] dateByAddingComponents:dateComponet toDate:date   options:0];
[self-getCustomeCalendar]所在的位置

  NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
    [gregorian setLocale:[NSLocale currentLocale]];
    [gregorian setFirstWeekday:2]; // 2 monday
    return gregorian;
以下是几个星期的返回值

周末日期:2014-02-23 00:00:00+0000,下周开始日期:2014-02-24 00:00:00+0000 周末日期:2014-03-02 00:00:00+0000,下周开始日期:2014-03-03 00:00:00+0000 周末日期:2014-03-09 00:00:00+0000,下周开始日期:2014-03-10 00:00:00+0000 周末日期:2014-03-16 00:00:00+0000,下周开始日期:2014-03-17 00:00:00+0000
周末日期:2014-03-23 00:00:00+0000,下周开始日期:2014-03-24 00:00:00+0000

//这就是问题所在

周末日期:2014-03-30 00:00:00+0000,下周开始日期:2014-03-30 23:00:00+0000

您可以看到,通过添加一天,所有日期都正确返回

但对于2014-03-30,当添加+1天时,它应该返回2014-03-31,返回时间为23小时,我无法找到此问题的原因


知道为什么会发生这种情况吗?

好吧,尽管我无法解决夏令时问题,但我可以通过如下计算解决我的问题

通常我会将计算出的值作为周开始日期,但现在我要做的是计算周开始日期(当前周结束日期+1),然后使用NSCalendar(使用GMT)进行另一次计算,以确定该周的实际开始日期,从而解决此问题,谢谢大家的意见和建议


如果有人找到了更好的解决方案,请发布。

看起来夏时制是个问题。首先,问题发生在3月9日(即3月9日+一天返回=>3月9日23小时,有什么解决这个问题的建议吗?我有这个问题,并且在我的案例中解决了它,我严格使用GMT时区中的所有日期对象。这对我来说很有效,因为我只需要和统一的团队一起工作。我记得苹果公司在2013年wwdc的一次会议上对此进行了一次演讲。是的,最初我也是这样做的,我通过将时区设置为GMT来查找一周的开始日期,因此将适当计算以下日期,但这带来了可用性问题,因为客户看到时区差大于12小时的日期与本地日期不同,这会导致一些时间的次日注意:我尝试使用GMT时区创建,如[calendar setTimeZone:[NSTimeZone TimeZoneWithAbRevision:@“GMT”];但这只能解决像伦敦这样的蒂姆宗地区的问题,但对纽约来说,这个问题无法得到解决