在golang开发中会遇到要获取当天0时的时间戳的场景,网上很多资料说明的方法都是不正确的,存在着误差,建议在得到指定的时间戳之后需要,反解析处时间格式来检查一下,之所有会有差别主要是因为时区的问题。

正确的方法:

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Now()
    newTime := time.Date(t.Year(), t.Month(), t.Day(), 0, 0, 0, 0, t.Location())
    fmt.Println(newTime.Unix())
}

存在误差的方法:

func main()  {
    timeStr := time.Now().Format("2006-01-02")
    fmt.Println("timeStr:", timeStr)
    t, _ := time.Parse("2006-01-02", timeStr)
    timeNumber := t.Unix()
    fmt.Println("timeNumber:", timeNumber)
}

上面的方法存在8个小时的误差,因为我们处于东八区。

标签: go golang