1. ホーム
  2. ios

[解決済み] 2つのNSDates間のスウィフト日数

2022-05-15 03:33:49

質問

Swift / the "new" Cocoaで2つのNSDates間の日数を取得するための新しい、素晴らしい可能性があるのだろうかと思います。

例えば、私がするRubyのような。

(end_date - start_date).to_i

どのように解決するのですか?

時差も考慮する必要があります。たとえば、日付を比較する場合 2015-01-01 10:002015-01-02 09:00 の場合、これらの日付間の差は24時間未満(23時間)であるため、これらの日付間の日数は0(ゼロ)と返されます。

もし、2つの日付の間の正確な日数を取得することが目的であれば、次のようにこの問題を回避することができます。

// Assuming that firstDate and secondDate are defined
// ...

let calendar = NSCalendar.currentCalendar()

// Replace the hour (time) of both dates with 00:00
let date1 = calendar.startOfDayForDate(firstDate)
let date2 = calendar.startOfDayForDate(secondDate)

let flags = NSCalendarUnit.Day
let components = calendar.components(flags, fromDate: date1, toDate: date2, options: [])

components.day  // This will return the number of day(s) between dates

Swift 3とSwift 4のバージョン

let calendar = Calendar.current

// Replace the hour (time) of both dates with 00:00
let date1 = calendar.startOfDay(for: firstDate)
let date2 = calendar.startOfDay(for: secondDate)

let components = calendar.dateComponents([.day], from: date1, to: date2)