Я ищу, чтобы отобразить количество месяцев от объекта NSDate.NSDateComponent Rounding
//Make Date Six Months In The Future
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *sixMonthsFromNow = [[NSDateComponents alloc] init];
[sixMonthsFromNow setMonth:6];
NSDate *finishDate = [calendar dateByAddingComponents:sixMonthsFromNow toDate:[NSDate date] options:0]; //Six Months Time
//Display
NSCalendarUnit requiredFormat = NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *dateComponents = [calendar components:requiredFormat fromDate:[NSDate date] toDate:finishDate options:0];
NSLog(@"%d months %d days %d hours %d minutes %d seconds", [dateComponents month], [dateComponents day], [dateComponents hour], [dateComponents minute], [dateComponents second]);
Это выходы: 5 months 29 days 23 hours 59 minutes 59 seconds
Который является большим, но я только хочу, чтобы отобразить количество месяцев.
Если я ограничиваю только месяцы:
//Make Date Six Months In The Future
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *sixMonthsFromNow = [[NSDateComponents alloc] init];
[sixMonthsFromNow setMonth:6];
NSDate *finishDate = [calendar dateByAddingComponents:sixMonthsFromNow toDate:[NSDate date] options:0]; //Six Months Time
//Display
NSCalendarUnit requiredFormat = NSMonthCalendarUnit;
NSDateComponents *dateComponents = [calendar components:requiredFormat fromDate:[NSDate date] toDate:finishDate options:0];
NSLog(@"%d months", [dateComponents month]);
Воспроизводит: 5 months
Хотя это технически правильно, я хотел бы округлить количество дней, чтобы сделать его выход через шесть месяцев.
Есть ли простой способ достичь этого эффекта? Я заметил, что на NSDateComponents не было свойства округления. Должен ли я вручную проверить количество дней и решить округлить?
Моя конечная цель заключается не только ограничить округление эффект месяцев, это должно быть в состоянии закруглить часов до нескольких дней, если я только поставки: NSDayCalendarUnit
Причина, по которой вывод не совсем «6 месяцев» является то, что вы называете '[дата NSDate]' дважды, и, возможно, разница миллисекунды между датой, используемой для вычисления 'finishDate' и дату используется для вычисления разницы 'dateComponents'. –
И как бы вы определили «округление до месяца», если месяц может иметь 28, 29, 30 или 31 день? –
Ярмарка, сохраняя ссылку на исходную дату, действительно правильно вычисляет дату, но это было действительно на самом деле для примера. Это может быть любая дата, которая не может пройти шесть месяцев. Округление - это действительно то, с чем мне нужна помощь, но похоже, что он должен определяться пользователем. Приветствия для поиска. –