如何在Swift中使用NSDate检查一周中的特定日期?

时间:2015-09-01 18:32:26

标签: swift nsdate

使用NSDate和Swift,我想创建一个在一周的特定日期触发的if语句。

具体来说,当前一天是星期一时,名为labelone的标签的文字应为"祝您有个愉快的一周"当其他任何一天labelone被隐藏时。

我知道从标签中更改文本并使其隐藏的代码,但是如何以这种方式使用NSDate构造if语句?

这是我尝试过的:

let today = NSDate()
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let components = calendar!.components([.Weekday], fromDate: today)

if components.weekday == 2 {
    print("Hello Monday")
} else {
    print("It's not Monday")
}

有更好的方法吗?

2 个答案:

答案 0 :(得分:10)

使用Calendar / NSCalendar执行日历计算:

Swift 3及以上

let today = Date()
let calendar = Calendar(identifier: .gregorian)
let components = calendar.dateComponents([.weekday], from: today)

if components.weekday == 2 {
    print("Hello Monday")
} else {
    print("It's not Monday")
}

Swift 2

let today = NSDate()
let calendar = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)
let components = calendar!.components([.Weekday], fromDate: today)

if components.weekday == 2 {
    print("Hello Monday")
} else {
    print("It's not Monday")
}

周一,周二等仅在公历中定义。有些像中国农历一样没有工作日的概念。

答案 1 :(得分:1)

这就是我完成任务的方式。

var CurrentDate = NSDate()
let dateFormatter = NSDateFormatter()
dateFormatter.timeZone = NSTimeZone()
dateFormatter.dateFormat = "ccc"

let Monday = dateFormatter.stringFromDate(CurrentDate)
let isMonday = "Mon"
if Monday == isMonday {
   print("It's Monday")
}
else {
   let otherDay = dateFormatter.stringFromDate(CurrentDate)
   print(otherDay)
}