2016-12-30 37 views
1

今天是Friday,根據NSCalendar,這是6。我可以通過以下得到這個如何減去日期組件?

Calendar.current.component(.weekday, from: Date()) 

如何獲得上週Saturday的工作日部分,這應該是7?如果我做Calendar.current.component(.weekday, from: Date()) - 6。我得到0這是無效的組件。

+0

你想要上個星期六的約會嗎? –

+0

不,我想組件,它是7,基本上我喜歡知道如何減去組件。例如,星期一是2.如果我想知道3天前的組件,那麼應該是星期五,但是如果我做2 - 3,我會得到-1,這是無效的。希望我清楚 – Coder221

+0

你必須得到日期,然後從中減去一天,而不是減去組件 – Tj3n

回答

2

試試這個,你必須首先獲取日期然後再次減:

var dayComp = DateComponents() 
dayComp.day = -6 
let date = Calendar.current.date(byAdding: dayComp, to: Date()) 
Calendar.current.component(.weekday, from: date!) 
+0

該解決方案的工作原理是完美的。 – Coder221

2

對於首先你需要使用calendar.date(byAdding:value:to:)得到那個日期,然後從它那裏得到日數。

extension Date { 
    func getDateFor(days:Int) -> Date? { 
     return Calendar.current.date(byAdding: .day, value: days, to: Date()) 
    } 
} 

現在簡單地使用這樣的功能,讓你的日子。

if let date = Date().getDateFor(days: -6) { 
    print(Calendar.current.component(.weekday, from: date)) 
} 
+1

欣賞它:) – Coder221