Swift比较日期与int的工作日

时间:2015-02-18 16:00:09

标签: swift nsdate nsdateformatter

我有一个需要验证的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方法。

2 个答案:

答案 0 :(得分:2)

stringFromDate返回string。在Swift中将string转换为int的方法是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

答案 1 :(得分:0)

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

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

请参阅NSCalendar documentationNSDateComponents documentation

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