如何创建过去的新 NSDate 对象,例如比另一个日期早 1 秒?

Posted

技术标签:

【中文标题】如何创建过去的新 NSDate 对象,例如比另一个日期早 1 秒?【英文标题】:How do I create a new NSDate object that is in the past, e.g. 1 second earlier than another date? 【发布时间】:2015-01-31 14:13:11 【问题描述】:

这就是我设置未来日期的方式:

var comp = NSDateComponents()
comp.setValue(1, forComponent: NSCalendarUnit.CalendarUnitMonth);
let date: NSDate = NSDate()
var expirationDate = NSCalendar.currentCalendar().dateByAddingComponents(comp, toDate: date, options: NSCalendarOptions(0))

现在,如果我有 dateA 并想创建一个比 dateA 早 1 秒的新日期 (dateB),该怎么办。

【问题讨论】:

减去一,您可以简单地执行let dateB = dateA.dateByAddingTimeInterval(-1)。 – 对于天和更大的单位,NSDateComponentsNSCalendar 是正确的选择。 【参考方案1】:

您可以通过将第二行从 1 to -1 和 NSCalendarUnit Month to Second 更改来实现此目的

var comp = DateComponents()
comp.setValue(-1, for: .second)
let date = Date()
let expirationDate = NSCalendar.current.date(byAdding: comp, to: date)

希望对你有所帮助。

【讨论】:

哦,我认为这行不通,所以没有尝试。我现在就试一试。 提前 1 秒,所以 NSCalendarUnit.CalendarUnitMonth 应该是 NSCalendarUnit.CalendarUnitSecond

以上是关于如何创建过去的新 NSDate 对象,例如比另一个日期早 1 秒?的主要内容,如果未能解决你的问题,请参考以下文章

创建 NSDate 并设置 AM 或 PM

如何使 NSDate 与关联对象一起工作?

创建具有特定时区的 NSDate 对象

NSDate 似乎如何知道它是 TimeZone?

如何一次删除多个核心数据对象?

通过 NSDate 对象属性进行 Swift 过滤