2011-11-10 58 views
5

在我的應用程序中,我得到日期和開始時間相同的日期和結束時間。結束時間可能是第二天的時間。NSDate:根據時間添加一天

example : Date : 11/01/2011 
      start time : 5:30 PM 
      end time : 4:30 AM (of next day morning) 

我沒有得到結束日期。

如何根據結束時間將一天添加到開始日期。我在SO上提到了很多答案,但找不到解決方案。

+0

你的問題不明確。你能否指定一些要點,比如你在哪裏得到它,以及你想如何改變日期。 – Robin

+0

我從服務器上使用web服務獲取 – Maulik

+0

你好,這是什麼最終解決方案。當你沒有結束日期。 – MinuMaster

回答

4

你應該使用這個功能

NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400]; 

這裏86400是60(秒)* 60(分鐘)* 24(小時)。
如果你的startDate從當前日期是沒有,那麼你可以使用此方法

- (id)initWithTimeInterval:(NSTimeInterval)secsToBeAdded sinceDate:(NSDate *)anotherDate 

你現在越來越喜歡這個

example : Date : 11/01/2011 
      start time : 5:30 PM 
      end time : 4:30 AM (of next day morning) 

所以你可以有兩個日期,表示開始時間和結束時間。使用下面的方法獲取時間間隔

- (NSTimeInterval)timeIntervalSince1970 

現在你有兩個時間間隔爲兩個不同的日期,對吧?現在簡單地減去它,你會得到你想要的。

+0

我怎樣才能得到NSTimeInterval的下午5:30到上午4:40?因爲我沒有4:30上午的日期? – Maulik

+0

請看我編輯的答案.. – Ankur

+0

我沒有兩個日期..只有一個日期與開始時間和結束時間。現在基於結束時間,我必須計算結束時間是同一日期還是下一個日期。 – Maulik

1

髒(無DST檢查)方法:如果您將所有內容都轉換爲常用單位(即NSTimeInterval/double秒),則更容易。檢查結束時間是否小於開始時間(從午夜轉換爲秒數)。從endSeconds減去startSeconds,如果結果爲負值,則增加24小時值(24 * 60 * 60 = 86400)。將結果添加到開始日期/時間。

2

解決:根據Akkis的答案...

NSDate *startDate = [df dateFromString:startingDateTime]; 
    NSDate *endDate = [df dateFromString:endingDateTime]; 

    NSComparisonResult result; 
    result = [startDate compare:endDate]; 

    if(result == NSOrderedDescending) 
    { 
     NSLog(@"newDate is greater"); 

     endDate = [endDate dateByAddingTimeInterval:60*60*24]; 
    }