0

为什么此代码显示日期为 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
4

1 回答 1

1

转换仅设置工作日、小时和分钟的 NSDateComponents 显然会为您提供第 1 年的日期。由于这早于儒略历/公历转换,您最终会在某些方法解释的地方得到奇怪的结果公历中的日期,而其他人则在儒略历中解释它。

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

于 2011-04-05T00:35:34.307 回答