Edited at

Swift3で日付(Date)の比較が超簡単になっていた件

More than 1 year has passed since last update.

これまで日付、Dateの比較ってすごく面倒だし、わかりにくかったです。


Swift

let today : Date = Date()

let yesterday: Date = Date(timeIntervalSinceNow:-60*60*24)

if today.compare(yesterday) == ComparisonResult.orderedDescending {
print("今日は昨日よりも未来") // 実行される
}


正直、orderedDescendingとかorderedAscendingってどっちがどっちだっけ…といつも迷っていました。

ですが、Swift3から新しく追加されたDate型であれば、比較演算子で比較ができるのです。

本当に嬉しい。


Swift

let now : Date = Date()

let yesterday: Date = Date(timeIntervalSinceNow: -60*60*24)
let tomorrow: Date = Date(timeIntervalSinceNow: 60*60*24)
let anotherNow : Date = Date()
let otherNow : Date = now

if tomorrow > now {
print("tomorrowはnowよりも未来") // 実行される
}
if tomorrow != now {
print("tomorrowとnowは違う日") // 実行される
}
if yesterday > now {
print("yesterdayはnowよりも未来") // 実行されない
}
if yesterday < now {
print("yesterdayはnowよりも過去") // 実行される
}
if now == anotherNow {
print("nowとanotherNowは同じ") // 実行されない
}
if now == otherNow {
print("nowとotherNowは同じ") // 実行される
}
if now <= anotherNow {
print("nowはanotherNowよりもちょっとだけ未来") // 実行される
}


上記でnowanotherNowは同じように見えますが、anotherNownowよりも後に実行されています。

この数行のコード間の数ミクロン秒の差があるので、nowanotherNowは同じではないということですね。

あぁ、嬉しい。

(今更かよ!って思われるかもしれませんが、、、)