0

今から年末までの日付の差を取得しようとすると、その月に 0 が返されます。オブジェクトを使用して、NSCalendar2 つのオブジェクトの違いを取得していNSDateます。

NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setYear:2013];
[comps setMonth:0];
[comps setDay:0];

[comps setHour:0];
[comps setMinute:0];
[comps setSecond:0];

NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *newDate = [calendar dateFromComponents:comps];

NSDateComponents *timeDifference = [[NSCalendar currentCalendar] 
    components: NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | 
                NSMinuteCalendarUnit | NSSecondCalendarUnit  
    fromDate:[NSDate date] toDate:newDate options:0];

int months = timeDifference.month;
int days = timeDifference.day;
if (months>0)
    days+=31;
int hours = timeDifference.hour;
int minutes = timeDifference.minute;
int seconds = timeDifference.second; 
4

1 に答える 1

0

2013 年までの月数、日数などを計算しようとしていますNSDateComponents。0 は「値がない」ことを意味し、カウントされるすべての値は 0 より大きい必要があります。そのため、comps値は「不完全」と見なされ、奇妙な出力が発生します。からNSCalendar

設定monthday、3 ~ 4 行目から 1 行目で問題を修正します。

于 2012-11-05T14:29:33.537 に答える