Ios NSDate组件到NSDate-Swift
我有这个功能:Ios NSDate组件到NSDate-Swift,ios,swift,nsdate,nsdatecomponents,Ios,Swift,Nsdate,Nsdatecomponents,我有这个功能: private func getCurrentDateComponent() -> NSDateComponents { let date = NSDate() let calendar = NSCalendar.currentCalendar() let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUn
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是零
谢谢你的帮助
我就是这样做的:
let allUnits = NSCalendarUnit(rawValue: UInt.max)
return UICalendar.currentCalendar().components(allUnits, fromDate: NSDate())
请注意,在Swift 2.0中,不再使用按位OR运算符|
,而是NSCalendarUnit
符合选项设置类型
格式:
let timeUnits : NSCalendarUnit = [.Hour, .Minute, .Second]
日期和日期组件之间的转换始终需要日历。
您有两个选项(比较):
- 为日期组件分配日历,即添加
到您的components.calendar = calendar
方法。然后getCurrentDateComponent()
一切正常。(不为日期指定日历。) 组件,var d = getCurrentDateComponent().date
属性返回您观察到的date
。)nil
- 或者,调用日历方法进行转换:
let d = NSCalendar.currentCalendar().dateFromComponents(getCurrentDateComponent())
NSDateComponents
之前设置日历,因为没有日历就没有日期
let components = calendar.components(.CalendarUnitHour | .CalendarUnitMinute | .CalendarUnitMonth | .CalendarUnitYear | .CalendarUnitDay, fromDate: date)
components.calendar = NSCalendar.currentCalendar();
return components
Swift 4:
let date = NSCalendar.current.date(from: components)
// components is your component name