向 NSDate 添加 30 秒

Adding 30 seconds to NSDate

如何将 NSDate 转换为秒?我需要几秒钟的时间,这样我就可以将日期增加 30 秒,然后转换回 NSDate 以安排本地通知。也欢迎任何更好的方法。

您可以使用 dateByAddingTimeInterval 并将值作为 30 传递。这将 return 您 NSDate 提前 30 秒。

NSDate *newDate = [previousDate dateByAddingTimeInterval:30];

Date and Time Programming Guide states that NSDateComponents 应该用于执行日期计算。

引自同一文档:

You should use the provided methods for dealing with calendrical calculations because they take into account corner cases like daylight savings time starting or ending and leap years.

所以要将日期增加 30 秒,您应该这样做:

NSDate * date = [NSDate date];
NSCalendar * currentCalendar = [NSCalendar currentCalendar];
NSDateComponents * dateComponents = [NSDateComponents new];

[dateComponents setSecond:30];

NSDate * newDate = [currentCalendar dateByAddingComponents:dateComponents toDate:date options:0];

NSLog(@"%@", newDate);