2012-10-16 65 views
1

手動設置我有一種奇怪的查詢......NSDate的計算失蹤1人時間當日期從設置

如果日期/時間在我的iPhone會自動設定的比時間正確顯示... enter image description here

如果日期/時間手動設置比我其實在(我在印度,並將其設置到倫敦。如果設置爲印度正常工作)不同的時區,它只會顯示錯誤的結果通過使用方法[self.surveyModel.creationDate dateByAddingTimeInterval:60*60*24*30]和類似的方法計算兩個日期20天..見下圖..

enter image description here

我沒有設置應用程序的默認時區或本地時區,我起訴下面的方法來顯示結果...

- (NSString *)stringWithFormat:(NSString *)format { 
    NSDateFormatter *outputFormatter = [[NSDateFormatter alloc] init]; 
    [outputFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 
    [outputFormatter setDateFormat:format]; 
    NSString *timestamp_str = [outputFormatter stringFromDate:self]; 
    [outputFormatter release]; 
    return timestamp_str; 
} 

我在做什麼錯在這裏...?

+0

只是一個想法,不知道它是否正確。您是否考慮過夏令時?當處理手動日期時,您需要查看該日期。 – Steven

+0

我認爲@Steven是對的。您應該將日期分解爲組件並添加日期而不是TimeInterval。 –

+0

@Steven謝謝你的投入..你是對的。我不包括當天的節省。 YOu可以發表您的評論作爲答案,我會接受它./ –

回答

2

注:這個答案是在回覆評論的問題

這似乎錯誤是由日光節約地區造成的,在這種情況下,英國倫敦。

當日期/時間自動計算時,iOS DateTime庫將DayLight保存考慮在內。

當手動日期時間,你通過這個代碼[self.surveyModel.creationDate dateByAddingTimeInterval:60*60*24*30]

要設置日期時間,而不列出啓用日光選項做處理。所以當你拿NSTimeZone尋找DayLight儲蓄選項。

+0

再次感謝.... –