在编写朱利安日计算器的unit testing时,我发现1847年12月2日之前的date被NSDate错误地初始化。 他们似乎有75秒的时间。 我一直没有find指向那个date的东西(这是在公历截止之后)。 这是一个错误还是有历史的日历调整,我没有遇到? int main(int argc, const char * argv[]) { @autoreleasepool { NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *dateComps = [NSDateComponents new]; dateComps.year = 1847; dateComps.month = 12; dateComps.day = 1; NSDate *d1 = [cal dateFromComponents:dateComps]; NSLog(@"d1 = %@", d1); dateComps = [NSDateComponents new]; dateComps.year = 1847; dateComps.month = 12; dateComps.day = […]
-(NSDate *)beginningOfDay:(NSDate *)date { NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *components = [cal components:( NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ) fromDate:date]; [components setHour:0]; [components setMinute:0]; [components setSecond:0]; return [cal dateFromComponents:components]; } -(NSDate *)endOfDay:(NSDate *)date { NSCalendar *cal = [NSCalendar currentCalendar]; NSDateComponents *components = [cal components:( NSMonthCalendarUnit | NSYearCalendarUnit | NSHourCalendarUnit | […]
如果没有其他信息,我怎么能得到一个NSDate对象的年/月/日? 我意识到我可以用类似这样的方式做到这一点: NSCalendar *cal = [[NSCalendar alloc] init]; NSDateComponents *components = [cal components:0 fromDate:date]; int year = [components year]; int month = [components month]; int day = [components day]; 但是对于像NSDate的年/月/日那样简单的事情来说,这似乎是一大麻烦。 有没有其他解决scheme?