【问题标题】:How to get the 'n' weekday of a Date如何获取日期的“n”工作日
【发布时间】:2016-09-16 08:37:52
【问题描述】:

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

扩展 NSDate { func getWeekDay(day: Int) -> NSDate { var beginningOfWeek:NSDate? NSCalendar.currentCalendar().rangeOfUnit(NSCalendarUnit.WeekOfYear, startDate: &beginningOfWeek, interval: nil, forDate: self) 让 comps = NSDateComponents() comps.day = 天 comps.minute = NSCalendar.currentCalendar().component(NSCalendarUnit.Minute, fromDate: self) comps.hour = NSCalendar.currentCalendar().component(NSCalendarUnit.Hour, fromDate: self) 让 nextDate = NSCalendar.currentCalendar().dateByAddingComponents(comps, toDate: beginningOfWeek!, options: .SearchBackwards) 返回下一个日期! } }

【问题讨论】:

    标签: ios swift nsdate swift3 nscalendar


    【解决方案1】:

    有另一种方法可以让一周的开始 直接翻译成 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
        }
    }
    

    【讨论】:

      【解决方案2】:

      这是您在 Swift 3 中为 Date 提供的扩展,并进行了一些优化

      extension Date {
        func getWeekDay(day: Int) -> Date {
          var beginningOfWeek = Date()
          var interval : TimeInterval = 0
          let currentCalendar = Calendar.current
          currentCalendar.dateInterval(of: .weekOfYear, start: &beginningOfWeek, interval: &interval, for: self)
          return currentCalendar.date(byAdding: .day, value: day, to: beginningOfWeek)!
        }
      }
      

      rangeOfUnit(startDate:interval:forDate:) 已在新的 Calendar 结构中转换为 dateInterval(of:start:interval:for:)

      【讨论】:

        猜你喜欢
        • 2013-09-07
        • 2021-04-25
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多