【问题标题】:NSDateComponents to NSDate - SwiftNSDateComponents 到 NSDate - Swift
【发布时间】:2015-07-08 08:42:57
【问题描述】:

我有这个功能:

private func getCurrentDateComponent() -> NSDateComponents {
        let date = NSDate()
        let calendar = NSCalendar.currentCalendar()
        let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: date)
        return components
    }

当我调用它并使用函数date

var d = this.getCurrentDateComponent().date

我不知道为什么变量 d 是 nil...

感谢您的帮助

是的

【问题讨论】:

    标签: ios swift nsdate nsdatecomponents


    【解决方案1】:

    斯威夫特 4:

    let date = NSCalendar.current.date(from: components) 
    
    // components is your component name
    

    【讨论】:

      【解决方案2】:

      我就是这样做的:

      let allUnits = NSCalendarUnit(rawValue: UInt.max)
      return UICalendar.currentCalendar().components(allUnits, fromDate: NSDate())
      

      请注意,在 Swift 2.0 中,按位 OR 运算符 | 不再使用,而是 NSCalendarUnit 符合 OptionSetType 格式:

      let timeUnits : NSCalendarUnit = [.Hour, .Minute, .Second]
      

      【讨论】:

        【解决方案3】:

        你需要在使用NSDateComponents之前设置日历,因为没有日历就没有日期。

        let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: date)
        components.calendar = NSCalendar.currentCalendar();
        return components
        

        【讨论】:

          【解决方案4】:

          日期日期组件之间的转换总是需要日历。 你有两个选择(比较NSCalendar dateFromComponents: vs NSDateComponents date):

          • 将日历分配给日期组件,即添加

            components.calendar = calendar
            

            到您的getCurrentDateComponent() 方法。那么

            var d = getCurrentDateComponent().date
            

            按预期工作。 (没有为日期分配日历 如您所见,date 属性返回 nil。)

          • 或者,调用日历方法进行转换:

            let d = NSCalendar.currentCalendar().dateFromComponents(getCurrentDateComponent())
            

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-10-02
            • 2012-04-23
            • 2013-04-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多