回答
使用NSCalendar
小號components:fromDate:
得到兩個日期的components。
然後根據需要使用dateFromComponents:
重新組合它們。
如果我得到你的權利NSDate
小號-dateByAddingTimeInterval:
與-timeIntervalSinceDate:
在一起是你在尋找什麼。
心連心
-f
我有兩個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值的唯一方法。
謝謝,這工作得很好:-) – niklassaers 2010-05-10 19:29:29