【发布时间】:2011-02-17 20:06:58
【问题描述】:
我有两个 NSDate,日期和时间。我想以这样一种方式添加它们,即我从日期和时间中获取日期。关于我如何做到这一点的任何建议?
干杯
尼克
【问题讨论】:
标签: objective-c cocoa nsdate
我有两个 NSDate,日期和时间。我想以这样一种方式添加它们,即我从日期和时间中获取日期。关于我如何做到这一点的任何建议?
干杯
尼克
【问题讨论】:
标签: objective-c cocoa nsdate
如果我猜对了,NSDates -dateByAddingTimeInterval: 和 -timeIntervalSinceDate: 就是您要找的。p>
第
-f
【讨论】:
使用NSCalendars components:fromDate: 获取两个日期的components。
然后根据需要使用dateFromComponents: 重新组装它们。
【讨论】:
我有两个 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 值的唯一方法。
【讨论】: