日数差を計算する

日数差を計算するには timerIntervalSince を使って差分の秒数を取ればいいです。

1日差だと 24h ですので

24h * 60min * 60sec → 86400sec の差になります。

// 西暦カレンダーを生成
let cal = Calendar( identifier: .gregorian )

// 2000/02/29 12:34:56 の日時を生成
let dtm0 = cal.date(from: DateComponents(
                            year: 2020,
                            month: 2,
                            day: 29,
                            hour: 12,
                            minute: 34,
                            second: 56
                            ))

// 2000/03/01 12:34:56 の日時を生成
let dtm1 = cal.date(from: DateComponents(
                            year: 2020,
                            month: 3,
                            day: 1,
                            hour: 12,
                            minute: 34,
                            second: 56
                            ))

guard let dtm0 = dtm0 else {
    print( "Failed to create dtm0" )
    throw SomeError.dtm0CreationFailed
}

guard let dtm1 = dtm1 else {
    print( "Failed to create dtm1" )
    throw SomeError.dtm1CreationFailed
}

// 時間差を取得する(単位は sec).
let dt = dtm1.timeIntervalSince( dtm0 )

// コンソールに出力する.
print( String( format: "time interval is %f sec.", dt ))
enum SomeError: Error {
    case dtm0CreationFailed
    case dtm1CreationFailed
}

guard で nil チェックしているのは cal.date で日時を生成しているときにありえない日付を指定したりすると nil になるからです。

例えば、うるう年ではないのに 2/29 を指定したり、月がマイナスだったり 13 だったり、日が 32 だったり、秒が 61 だったり、まあいろいろあります。

下記が XCode のコンソール出力です。

time interval is 86400.000000 sec.