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

use*_*721 2 nsdate swift

使用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")
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法呢?

Cod*_*ent 11

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

斯威夫特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")
}
Run Code Online (Sandbox Code Playgroud)

斯威夫特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")
}
Run Code Online (Sandbox Code Playgroud)

星期一,星期二等仅在格里高利历中定义.有些像中国农历一样根本没有工作日的概念.

  • 1 =星期天,2 =星期一,...... (2认同)
  • 如果一周的第一天是星期一而不是星期天怎么办? (2认同)