2010-05-10 67 views
2

我有两个NSDate,日期和时间。我想以这样的方式添加它们,以便从日期和时间中获得日期。有关我如何做这件事的任何建议?添加两个NSDate

干杯

回答

2

如果我得到你的权利NSDate小号-dateByAddingTimeInterval:-timeIntervalSinceDate:在一起是你在寻找什么。

心连心
-f

1

我有两个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值的唯一方法。