2010-04-27 11 views
6

BC çağında bir tarih oluşturmaya çalışıyorum, ancak oldukça zor başarısız. yerine ‘-4712’ Aşağıdaki döner ‘4713’ yılı olarak,:Uzak geçmişte belirli bir tarih nasıl oluşturulur, BC çağında

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [NSDateComponents new]; 
    [components setYear: -4712]; 
    NSDate *date = [calendar dateFromComponents:components]; 
    NSLog(@"%d", [[calendar components:NSYearCalendarUnit fromDate: date] year]); 

yapıyorum yanlış fikrin var mı?

GÜNCELLEME: Çalışma kod

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    NSDateComponents *components = [NSDateComponents new]; 
    [components setYear: -4712]; 
    NSDate *date = [calendar dateFromComponents:components]; 
    NSDateComponents *newComponents = [calendar components:NSEraCalendarUnit|NSYearCalendarUnit fromDate:date]; 
    NSLog(@"Era: %d, year %d", [newComponents era], [newComponents year]); 

Bu Ben açıkladığı gibi, çağ için 0 yazdırır.

cevap

6

Sizin kodunuz gerçekten çalışıyor. Yıl sıfır olmadığından -4712 M.Ö 4713 yılıdır. Dönem bileşenini kontrol ederseniz, Gregoryen takviminde BC’yi belirten sıfır olduğunu görürsünüz. Bu negatif işaretini çevirin ve MS 4712'yi göreceksiniz (era 1).

+0

Yapbozun bir parçasını kaçırdığımı biliyordum :) Çok teşekkürler! (Kodun güncellenmiş sürümü eklendi) – alloy

İlgili konular