0

我已经为此苦苦挣扎了好几个小时。我试图找出两个日期之间的不同月份。开始日期与系统日期正确,但 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;
4

2 回答 2

1

你能试试吗

[formatter setDateFormat:@"dd/MM/yyyy"];

几个月只是通过更改 dateFormat 是19.

于 2013-06-06T12:55:27.830 回答
1

一年的格式化程序

YYYY - wrong
yyyy - right

改变它你的代码工作正常

有关格式的更多详细信息

于 2013-06-06T13:09:39.453 回答