Golangの時間のbefore/afterの話

2017-09-14

英語の学が足らないので時間の比較を2回に1回間違えてしまうので、最近行っているバッドノウハウの共有します。

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    yesterday := now.Add(-24 * time.Hour)

    fmt.Println("now.After(yesterday) =>", now.After(yesterday))   // -> true
    fmt.Println("now.Before(yesterday) =>", now.Before(yesterday)) // -> false

    fmt.Println("yesterday.After(now) =>", yesterday.After(now))   // -> false
    fmt.Println("yesterday.Before(now) =>", yesterday.Before(now)) // -> true
}

https://play.golang.org/p/WkBHM4AO_X

毎回 after school は放課後だからと考えてよくわからなくなります。また含むのか含まないのかも毎回わからなくなります。

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now()
    yesterday := now.Add(-24 * time.Hour)

    fmt.Println(now.UnixNano() > yesterday.UnixNano()) // -> true
}

https://play.golang.org/p/2yNW-X_P0Q

そこで1度 Unix/UnixNano に変換して比較してあげれば,自分でも簡単に判別できるので好んで使っています。

みなさんはパッとBefore/Afterでどっちが大きいと真かわかるものなんでしょうか

<< Vironとgoaでフロントのコード0でリソースの管理画面を作る
Kubernetesの成功したJobを消す >>
@yudppp
Web engineer.