【问题标题】:Incorrect Week StartDate with NSCalendar and NSDateComponentNSCalendar 和 NSDateComponent 的周 StartDate 不正确
【发布时间】:2014-02-13 21:37:12
【问题描述】:

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

以下是我的代码

当前周末结束日期,我将添加一天以获得下周开始日期

 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 小时返回,我无法找到导致此问题的原因

知道为什么会这样吗?

【问题讨论】:

  • 看来夏令时是个问题。
  • 是的,最初问题发生在 3 月 9 日(即 3 月 9 日 + 一日退货 => 3 月 9 日 23 小时,有解决此问题的建议解决方案吗?
  • 我遇到了这个问题,并在我严格使用 GMT 时区的所有日期对象的情况下解决了这个问题。这对我有用,因为我只需要使用统一日期。我记得 Apple 在 wwdc 2013 的一个会议上对此进行了讨论。
  • 是的,最初我也是这样做的,我通过将时区设置为 GMT 来查找周开始日期,因此将适当计算以下日期,但这会带来可用性问题,因为客户看到的日期不同时区差异大于 12 小时的本地日期,有时会导致第二天
  • 注意:我尝试使用 GMT 时区创建,例如 [calendar setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];但这仅解决了一些像伦敦这样的 timzone 的问题,但对于 NewYork 来说问题就解决了

标签: ios objective-c datetime


【解决方案1】:

好的,即使我无法解决夏令时问题,我也可以通过如下计算解决我的问题,

通常我会将计算的值作为周开始日期,但现在我将计算周开始日期(当前周 endDate + 1 ),然后将进行另一个计算以找出实际使用 NSCalendar(带 GMT)的特定一周的开始日期,它解决了这个问题,感谢 cmets 和建议,

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-07
    • 1970-01-01
    • 2021-02-13
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    相关资源
    最近更新 更多