Swift 将日期的工作日与 int 进行比较

Swift compare weekday of a date with a int

我有一个需要验证的 UIDatePicker。我想检查来自 UIDatePicker 的工作日是否是一个特定的 int 值。

我用

@IBAction func validateDateTime(sender: AnyObject) {
    var date = self.dateTime.date

    let formatterWeekday = NSDateFormatter()
    formatterWeekday.dateFormat = "e"

    let weekday_string = formatterWeekday.stringFromDate(date)

}

获取工作日,但如何将其转换为 int 以便与其他 int 值进行比较?我试过:

weekday_string.intValue() 

但似乎 weekday_string 不支持 intValue 方法。

stringFromDatereturns一个string。 Swift中stringint的方法是toInt()

你可以试试:

weekday_string.toInt()

或者你可以得到工作日 int 如下:

var myDate = self.dateTime.date
let myCalendar = NSCalendar(calendarIdentifier: NSGregorianCalendar)
let myComponents = myCalendar.components(.WeekdayCalendarUnit, fromDate: myDate)
let weekDay = myComponents.weekday

我对 Swift 还不够流利,所以这里是 Objective-C 中的答案。由于您已经有了日期,因此不需要 fiddle 与任何格式化程序。您只需要向日历询问组件:

NSDateComponents *components = [[NSCalendar currentCalendar] components: NSWeekdayCalendarUnit fromDate:date];
// components.weekDay is a number, representing the day of the week.

参见NSCalendar documentation and the NSDateComponents documentation

为了使其更稳定,使用特定日历而不是当前默认日历通常是个好主意(不同地区的用户可能使用非公历)。因此,您可以使用 [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar].

而不是 [NSCalendar currentCalendar]