2011-02-27 31 views
15

Saat, dakika ve 0 ile başlayan bir NSDate nesnesi almayı deniyorum 0. Bunu almak için aşağıdaki kodu kullanıyorum, ama nedense [NSDateComponents tarih] ]. Kodumdaki sorun nedir? Bir takvim örneğinden bileşenleri olsunNSDateComponents sıfırlama

NSCalendar *gregorian = [[[NSCalendar alloc] 
          initWithCalendarIdentifier:NSGregorianCalendar] autorelease]; 

NSDate *now = [[[NSDate alloc] init] autorelease]; 
NSDateComponents *nowDc = [gregorian components:(NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit) 
     fromDate:now]; 
// this returns nil! 
NSDate *todayStart = [nowDc date]; 

cevap

34

NSDateComponents örneğinin takvim ayarlı değil.

Ancak takvim olmadan, tarih yok, çünkü [components date] kullanmadan önce takvimi ayarlamanız gerekir.

Yani [nowDc setCalendar:gregorian];

+0

Tamam eklemeyi deneyin, nereye docs yazıyor? Ne rahatsız edici bir uygulama. – Ovesh

+2

Açıkça söylemez. Ancak Tarih Programlama kılavuzunda ima edilmektedir. NSDate (zamandaki gibi) ve gün ayındaki aylar arasındaki fark oldukça önemlidir. Aynı sebepten dolayı [NSDate dateWithYear: month: date] yöntemi yoktur. Bir NSCalendar olmadan ay ve yıl anlamsızdır. –

+0

Çok yardımcı, teşekkürler! –