ios - 如何获取日期的 'n' 工作日

标签 ios swift nsdate swift3 nscalendar

我需要将这个函数翻译成swift。 基本上它得到了本周的“n”日是什么。因此,例如,如果我将它与 NSDate().getWeekDay(0) 一起使用,它会给我 9 月 11 日星期日,依此类推。 但似乎 rangeOfUnit 不再存在于 Swift-3 中。 这是我之前在 Swift-2 中的实现

extension NSDate {
    func getWeekDay(day: Int) -> NSDate {
        var beginningOfWeek: NSDate?
        NSCalendar.currentCalendar().rangeOfUnit(NSCalendarUnit.WeekOfYear, startDate: &beginningOfWeek, interval: nil, forDate: self)
        let comps = NSDateComponents()
        comps.day = day
        comps.minute = NSCalendar.currentCalendar().component(NSCalendarUnit.Minute, fromDate: self)
        comps.hour = NSCalendar.currentCalendar().component(NSCalendarUnit.Hour, fromDate: self)
        let nextDate = NSCalendar.currentCalendar().dateByAddingComponents(comps, toDate: beginningOfWeek!, options: .SearchBackwards)
        return nextDate!
    }
}

最佳答案

有一个替代方法可以获取一周的开始时间 直接转换为 Swift 3:

extension Date {
    func getWeekDay(day: Int) -> Date {
        let cal = Calendar.current
        let comps = cal.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self)
        let beginningOfWeek = cal.date(from: comps)!
        let nextDate = cal.date(byAdding: .day, value: day, to: beginningOfWeek)!
        return nextDate
    }
}

关于ios - 如何获取日期的 'n' 工作日,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527084/

相关文章:

ios - 使用 MKAnnotation 的自动属性合成警告

swift - 是否可以在相机胶卷照片上重写?

ios - 为什么 UIViewController View 坐标是 (0,20) 以及如何更改 (iPad)

ios - 在 webRTC iOS 中设置视频大小

ios - 在 iOS 中为多个设备和不同方向启动屏幕 Storyboard

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

ios - SpriteKit - SKScene 边界不等于 SKView 边界

ios - 为什么 NSFormatter dateFromString 偶尔会返回 nil?

Swift NSDate 获取当前日期但去除年、月和日

ios - 无法与日期[本地日期和服务器日期]进行比较