2011-11-10 20 views
5

'a göre bir gün ekle Uygulamamda, aynı tarih ve bitiş saatinin Tarihini ve başlangıç ​​saatini alıyorum. Bitiş zamanı, ertesi günün zamanı olabilir.NSDate: Time

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

Bitiş Tarihini alamıyorum.

Bitiş saatine göre başlangıç ​​tarihine bir gün nasıl ekleyebilirim? SO'da birçok cevaba başvurdum ama çözümü bulamadım.

+0

soru net değil. Nereye götürdüğünüz gibi bazı noktaları belirtebilir ve tarihi nasıl değiştirmek istersiniz? – Robin

+0

Web hizmetini kullanarak sunucudan alıyorum – Maulik

+0

Merhaba, bunun için son çözüm nedir. Bitiş tarihi yoksa. – MinuMaster

cevap

4

Eğer bu işlevi burada

NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:86400]; 

86400 60 (saniye) 'dir * 60 (dakika) * 24 (saat) kullanmalıdır.
senin startDate Geçerli tarihten değilse o zaman bu yüzden iki tarihleri ​​olabilir

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

bu

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

gibi alıyorsanız bu yöntemi kullanabilirsiniz, zaman ve bitiş saati temsil .

zaman aralığını almak için aşağıdaki yöntemi kullanın, iki farklı tarih için iki zaman aralığınız var, değil mi? Şimdi basitçe çıkar ve istediğini alırsın.

+0

NSTimeInterval'ı 5:30 PM'den 4:40'a nasıl alabilirim? 4:30 gibi ben yok mu ??? – Maulik

+0

lütfen benim düzenlenmiş cevabımı gör .. – Ankur

+0

İki tarihim yok .. sadece başlangıç ​​tarihi ile bir tarih ve bitiş zamanı var. Şimdi Bitiş süresine bağlı olarak, bitiş tarihinin aynı tarih veya sonraki tarih için olup olmadığını hesaplamak zorundayım. – Maulik

1

Kirli (DST kontrolü yok) yöntemi: Her şeyi ortak birimlere dönüştürürseniz (örn. NSTimeInterval/double seconds) daha kolaydır. Bitiş süresinin başlangıç ​​saatinden daha az olup olmadığını kontrol edin (gece yarısından saniye cinsine dönüştürülür). EndSeconds'ı endSeconds'tan çıkar, eğer sonuç negatifse, 24 saat değerindeki saniyeleri ekleyin (24 * 60 * 60 = 86400). Başlangıç ​​tarihi/saatine sonuç ekleyin.

2

Çözüldü: AkKis cevabı göre ...

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]; 
    }