为什么这段代码显示的日期是 SAT,而使用 NSDateComponent setWeekday 我使用 1 表示 SU



为什么此代码显示的日期是SAT,而NSDateComponent和setWeekday我使用1表示SUN?

// Set Day
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setWeekday:1];
[comps setHour:13];
[comps setMinute:30];
NSCalendar *gregorian = [[[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar] autorelease];
NSDate *tempDate = [gregorian dateFromComponents:comps];
NSDateFormatter *format = [[[NSDateFormatter alloc] init] autorelease];
[format setDateFormat:@"EEE HH:mm"];    
NSString *s = [format stringFromDate:tempDate];
NSLog(@"Finishing : %@", s);
// Gave => 2011-04-05 09:50:28.467 test1[39840:207] Finishing : Sat 13:30

转换仅设置了工作日、小时和分钟的 NSDateComponents 显然会给您一个 1 年的日期。由于这早在儒略历/公历过渡之前,因此在某些地方,某些方法解释公历中的日期,而其他方法在儒略历中解释日期,因此您最终会得到奇怪的结果。

当我使用更详细的日期格式尝试您的代码时,我得到Sat 0001-01-01 13:30:00 -045602.在组件上使用setYear:后尝试一下,您将获得明智的结果。

最新更新