go时间比较

原创
2015/03/10 15:15
阅读数 971

go中time比较时需要注意写法

package main

import (
    "fmt"
    "time"
)

func main() {
    format := "2006-01-02 15:04:05"
    now := time.Now()
    //now, _ := time.Parse(format, time.Now().Format(format))
    a, _ := time.Parse(format, "2015-03-10 11:00:00")
    b, _ := time.Parse(format, "2015-03-10 16:00:00")

    fmt.Println(now.Format(format), a.Format(format), b.Format(format))
    fmt.Println(now.After(a))
    fmt.Println(now.Before(a))
    fmt.Println(now.After(b))
    fmt.Println(now.Before(b))
    fmt.Println(a.After(b))
    fmt.Println(a.Before(b))
    fmt.Println(now.Format(format), a.Format(format), b.Format(format))
    fmt.Println(now.Unix(), a.Unix(), b.Unix())
}

以上写法,比较结果不正确,换成注释中的写法,结果正确。

原因不太清楚,有人知道不?


补充:按照z_east的回复,加个时区就可以了,这个哥们写的比较详细http://my.oschina.net/achun/blog/142315

展开阅读全文
打赏
0
0 收藏
分享
加载中

引用来自“z_east”的评论

格式化的时候,没有代入时区信息。format := "2006-01-02 15:04:05" 改成 format := "2006-01-02 15:04:05 MST"
或者用 time.ParseInLocation
刚试了一下,果然如此。3q. 加个时区就可以了。这样说的话是不是对我们来说加UTC更合适一些?
2015/03/18 17:58
回复
举报
格式化的时候,没有代入时区信息。format := "2006-01-02 15:04:05" 改成 format := "2006-01-02 15:04:05 MST"
或者用 time.ParseInLocation
2015/03/18 17:17
回复
举报
更多评论
打赏
2 评论
0 收藏
0
分享
返回顶部
顶部