概要
Goで日時を司る型はtime.Timeでナノ秒まで適用される。
このtime.Timeには比較演算子の==, <, >が使えずAfter, Before, Equalメソッドを使って比較する必要がある。
チートシート
| 時間の関係 | 記述 | 返値 |
|---|---|---|
| a > b | a.After(b) | true |
| a > b | a.Equal(b) | false |
| a > b | a.Before(b) | false |
| a = b | a.After(b) | false |
| a = b | a.Equal(b) | true |
| a = b | a.Before(b) | false |
| a < b | a.After(b) | false |
| a < b | a.Equal(b) | false |
| a < b | a.Before(b) | true |
ポイント
time.TimeのAfter、Beforeはイコールを含まない評価をするようになっています。
そのため a <= b が true を返す、つまりイコールを含むような評価をしたい場合は以下の2パターンで記述する。
a.Before(b) || a.Equal(b)!a.After(b)
個人的には2パターン目が短くてif文に含める時にはよく見ると思います。