2010-05-10 69 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值的唯一方法。