dateFromComponents返回错误的日期

时间:2015-07-31 11:34:59

标签: ios objective-c date nsdate nsdatecomponents

我使用此代码设置自定义日期

NSDecimalNumber *salaryToReturn = [NSDecimalNumber zero];

NSCalendar *gregorianCalendar = [[NSCalendar alloc] initWithCalendarIdentifier: NSCalendarIdentifierGregorian]; // Setup an NSCalendar
NSDateComponents *components = [gregorianCalendar components: NSCalendarUnitDay | NSCalendarUnitMonth |  NSCalendarUnitYear |NSCalendarUnitSecond | NSCalendarUnitMinute | NSCalendarUnitHour | NSCalendarUnitTimeZone fromDate: [NSDate date]]; // Setup NSDateComponents
[components setTimeZone:[NSTimeZone defaultTimeZone]];
[components setMonth:monthInt]; // 6
[components setYear:yearInt]; // 2015

// Setup the new date
NSDate *dateToCompare = [gregorianCalendar dateFromComponents: components];

dateToCompare显示为" 2015-07-01 11:31:01 + 0000"

与7月而不是6月一样,为什么会这样?然而,如果我将其设置为5而不是6,则显示正确

谢谢!

修改

我想我知道为什么,因为我没有设定这一天,而且6月31日也不存在

2 个答案:

答案 0 :(得分:0)

问题是我将当月恢复了一个月,但这不起作用,因为六月只有30天,而且今天是第31天

答案 1 :(得分:0)

你忘了设定一天

[components setDay:1];