NSCalendarUnit标志用于设置所有标志

时间:2014-08-05 23:19:01

标签: swift nsdate nscalendar nsdatecomponents

以下内容将创建一个NSDateComponents对象,其中包含dayweekday但不包含hour

var today = NSDate()
var gregorian = NSCalendar(calendarIdentifier: NSGregorianCalendar)
var flags: NSCalendarUnit = .DayCalendarUnit | .WeekdayCalendarUnit
var components = gregorian.components(flags, fromDate: today)

// valid
components.day
components.weekday
// invalid
components.hour

为了拥有hour,我必须| - 在.HourCalendarUnit这样:

flags = flags | .HourCalendarUnit

是否有指定所有标志的标志?或者,如果我想让|全部拥有它们,我是否只需手动NSDateComponents它们?

或者,理想情况下,我希望能够在不使用today.hour的情况下说出NSDateComponents。这样的课程是否存在?

1 个答案:

答案 0 :(得分:10)

可以使用NSCalendarUnit初始化

UInt,这样就可以了 所有可能的组成部分:

var today = NSDate()
var gregorian = NSCalendar(calendarIdentifier: NSGregorianCalendar)
var flags = NSCalendarUnit(UInt.max)
var components = gregorian.components(flags, fromDate: today)

不存在today.hour方法,因为无法进行计算 知道用于转换的时区。

Swift 2的更新:

let gregorian = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let flags = NSCalendarUnit(rawValue: UInt.max)