【问题标题】:Adding two NSDate添加两个 NSDate
【发布时间】:2011-02-17 20:06:58
【问题描述】:

我有两个 NSDate,日期和时间。我想以这样一种方式添加它们,即我从日期和时间中获取日期。关于我如何做到这一点的任何建议?

干杯

尼克

【问题讨论】:

    标签: objective-c cocoa nsdate


    【解决方案1】:

    如果我猜对了,NSDates -dateByAddingTimeInterval:-timeIntervalSinceDate: 就是您要找的。​​p>


    -f

    【讨论】:

      【解决方案2】:

      使用NSCalendars components:fromDate: 获取两个日期的components
      然后根据需要使用dateFromComponents: 重新组装它们。

      【讨论】:

        【解决方案3】:

        我有两个 NSDate,日期和时间。

        听起来你做错了。

        一个 NSDate 代表一个特定的时刻(自纪元以来的 X 秒)。 NSDate 不仅仅是“x 点”或“日历上的这个日期”,您不应该尝试将它们组合在一起,因为 DST 之类的影响可能会使您的计算错误(在某些时区,某些日期有两个 1:00 小时,有些没有 2:00 小时)。

        考虑使用 NSDatePicker 或 UIDatePicker(视情况而定)让用户从一个地方输入日期和时间。这不仅对您来说更容易,而且还会给出更正确的结果。

        如果您从文件或类似来源分别读取这两部分,并且您不控制格式(因此您不能命令生成方以一个值发出日期和时间),您'需要做以下两件事之一:

        • 如果可能,将两个字符串组合起来。例如,ISO 8601 日期(例如,“2010-05-10”)和 ISO 8601 时间(例如,“23:20:19-0700”)可以在它们之间用“T”连接,以形成有效的,完全指定的 ISO 8601 日期(“2010-05-10T23:20:19-0700”)。然后,您可以将此单个字符串传递给正确配置的 NSDateFormatter。

        • 如果由于某种原因,您无法有意义地组合字符串,请自己解析它们并自己填写单个 NSDateComponents 对象。

          这并不令人愉快,但正确性很重要,而且每年仅在两小时内发生的错误(错误的日期解析)只会让您的部分用户发疯。

        我们的目标是准确地生成一个完整描述相关日期和时间的 NSDate 对象。这是确保在所有情况下都能获得正确的 NSDate 值的唯一方法。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-08-01
          • 1970-01-01
          • 2010-12-31
          • 1970-01-01
          • 1970-01-01
          • 2011-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多