-1

Как рассчитать разницу во времени (в секундах) отныне до определенного дня и часа (например, 6 вечера в 20-й день следующего месяца)?Вычислять секунды между настоящим и произвольным временем и днем ​​в будущем

Я пробовал много, но не смог найти легкое решение, не рассчитывая много и проверяя множество разных случаев.

NSDate *now = [NSDate date]; 
NSDateComponents *dc = [[NSDateComponents alloc] init]; 
[dc setMonth:1]; 
MyTargetDateObject = [[NSCalendar currentCalendar] dateByAddingComponents:dc toDate:now options:0]; 
    [dc release]; 

..just добавляет 1 месяц с этого момента. Другие примеры, например. here, похоже, как-то не применяются.

+1

Даты _are_ в секундах. Итак, сформируйте две даты и вычтите. – matt

ответ

1

Что-то вроде этого (вы должны будете переводить с Swift, но я уверен, что вы получите идею):

let now = NSDate() 
let greg = NSCalendar(calendarIdentifier: NSGregorianCalendar) 
let u : NSCalendarUnit = .CalendarUnitYear | .CalendarUnitMonth 
var dc = greg!.components(u, fromDate: now) 
dc.month += 1 // next month 
dc.hour = 18 // at 6 PM 
dc.day = 20 // on the 20th 
let then = greg!.dateFromComponents(dc)! 
let diff = then.timeIntervalSinceNow // time interval = seconds 

Обратите внимание, что мы можем сделать арифметические операции с датами, добавляя к желаемой единице NSDateComponents. Также обратите внимание, что все преобразования Date Date < -> Date должны проходить через календарь.

 Смежные вопросы

  • Нет связанных вопросов^_^