获取昨天的 NSDate 开始和结束

Getting yesterday's NSDate start and end

我在这里查看了几个类似的问题,但它们解决的问题与我尝试做的略有不同。我想为昨天的开始和结束创建一个 NSDate 对象 (12:00am - 12:00am)。我已经成功地为一天的开始和一天的结束创建了一个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)

但是我得到一个错误

Type of expression is ambiguous without more context

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

我拖来拖去的一些扩展。将以下内容放入游戏中并享受:

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