让昨天的NSDate开始和结束

时间:2015-11-09 22:51:35

标签: ios swift nsdate

我在这里看了几个类似的问题,但是它们解决的问题与我正在尝试的问题略有不同。我想为昨天的开始和结束(凌晨12:00 - 凌晨12:00)创建一个NSDate对象。我已经成功地为当天的开始和当天的结束创建了NSDate,但我只能在当天而不是前一天进行。这似乎不应该更难,但我遇到了一些麻烦。

我今天的开始和结束NSDate

extension NSDate {

    var startOfDay: NSDate {
        return NSCalendar.currentCalendar().startOfDayForDate(self)
    }

    var endOfDay: NSDate? {
        let components = NSDateComponents()
        components.day = 1
        components.second = -1
        return NSCalendar.currentCalendar().dateByAddingComponents(components, toDate: startOfDay, options: NSCalendarOptions())
    }
} 

我尝试过添加这样的内容:

var yesterday = NSCalendar.currentCalendar().dateByAddingUnit(.CalendarUnitDay, value: -1, toDate: NSDate(), options: nil)

但是我收到了错误

  

如果没有更多的上下文,表达的类型是不明确的

。我显然遗漏了一些重要的东西,但我似乎无法弄清楚它是什么。

1 个答案:

答案 0 :(得分:1)

我拖延了一些扩展。在剧中扮演以下角色并享受:

import UIKit

extension NSDate {
    var yesterday:NSDate {
        let calendar = NSCalendar.currentCalendar()
        return calendar.startOfDayForDate(calendar.dateByAddingUnit(.Day, value: -1, toDate: self, options: NSCalendarOptions.WrapComponents)!)
    }

    var tomorrow:NSDate {
        let calendar = NSCalendar.currentCalendar()
        return calendar.startOfDayForDate(calendar.dateByAddingUnit(.Day, value: 1, toDate: self, options: NSCalendarOptions.WrapComponents)!)
    }
}


let now = NSDate()
now.yesterday
now.tomorrow
now.yesterday.yesterday.yesterday.yesterday
now.tomorrow.yesterday