计算从现在到将来任意时间和日期之间的秒数

时间:2015-01-29 01:59:31

标签: objective-c cocoa-touch nsdate nstimeinterval date-arithmetic

如何计算从现在到特定日期和时间(例如下个月20日下午6点)的时差(以秒为单位)?

我尝试了很多,但没有成功地找到一个简单的解决方案而没有计算很多并且检查了很多不同的情况。

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

..从现在开始增加1个月。其他例子,例如here似乎没有以某种方式应用。

1 个答案:

答案 0 :(得分: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的所需单位来进行日期算术。另请注意所有日期< - >日期组件转换需要通过日历。