web-dev-qa-db-ja.com

日付コンポーネントを減算する方法は?

今日はFridayであり、NSCalendarによれば_6_です。私は以下を使用してこれを得ることができます

_Calendar.current.component(.weekday, from: Date())
_

先週のSaturdayの曜日コンポーネントを取得するにはどうすればよいですか。これは_7_である必要がありますか?

もし私がCalendar.current.component(.weekday, from: Date()) - 6を実行するとします。有効なコンポーネントではない_0_を取得しています。

13
Coder221

これを試してください、あなたは最初に日付を取得し、それからもう一度減算する必要があります:

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

そのためには、最初に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))
}
6
Nirav D

カレンダーと日付のコンポーネントを使用して、すべてをDate拡張機能に入れることができます。

Swift 4.1

extension Date {
    func removing(minutes: Int) -> Date? {
        let result =  Calendar.current.date(byAdding: .minute, value: -(minutes), to: self)
        return result
    }
}
1
Kappe