NSDate始终显示相同的日期

时间:2013-06-06 12:50:23

标签: ios objective-c nsdate

我几个小时都在苦苦挣扎。我想找到两个日期之间的差异月份。 系统日期的开始日期是正确的,但endDate始终显示相同的日期2014-01-04 00:00:00,无论用户输入什么。 (并且valuetosave是用户输入的日期,我将其保存在userdefaults中,如果我在日志中看到它是正确的,例如字符串是31/12/2014)。因此,目前我总是在用户选择的日期获得7个月的事件,例如2014年12月31日。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/YYYY"];
NSDate *endDate = [formatter dateFromString:valuetosave];
NSCalendar *gregorian = [[NSCalendar alloc]

                         initWithCalendarIdentifier:NSGregorianCalendar];

unsigned int unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *comps = [gregorian components:unitFlags fromDate:startDate  toDate:endDate options:0];
float months = [comps month]+1;

2 个答案:

答案 0 :(得分:1)

你可以试试吗

[formatter setDateFormat:@"dd/MM/yyyy"];
只需更改dateFormat 19即可获得

个月。

答案 1 :(得分:1)

年份格式化程序

YYYY - wrong
yyyy - right

更改它,您的代码工作正常

有关formatting

的更多详情