当前位置 博文首页 > golang时间字符串和时间戳转换的案例

    golang时间字符串和时间戳转换的案例

    作者:一根烂笔头 时间:2021-02-04 15:15

    1. 获取当前时间字符串和时间戳

    package main
    import (
      "fmt"
      "time"
    )
    func main() {
      now := time.Now().UTC()
      // 显示时间格式: UnixDate = "Mon Jan _2 15:04:05 MST 2006"
      fmt.Printf("%s\n", now.Format(time.UnixDate))
      // 显示时间戳
      fmt.Printf("%ld\n", now.Unix())
      // 显示时分:Kitchen = "3:04PM"
      fmt.Printf("%s\n", now.Format("3:04PM"))
    }
    

    更多时间格式

    const (
        ANSIC    = "Mon Jan _2 15:04:05 2006"
        UnixDate  = "Mon Jan _2 15:04:05 MST 2006"
        RubyDate  = "Mon Jan 02 15:04:05 -0700 2006"
        RFC822   = "02 Jan 06 15:04 MST"
        RFC822Z   = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
        RFC850   = "Monday, 02-Jan-06 15:04:05 MST"
        RFC1123   = "Mon, 02 Jan 2006 15:04:05 MST"
        RFC1123Z  = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
        RFC3339   = "2006-01-02T15:04:05Z07:00"
        RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
        Kitchen   = "3:04PM"
        // Handy time stamps.
        Stamp   = "Jan _2 15:04:05"
        StampMilli = "Jan _2 15:04:05.000"
        StampMicro = "Jan _2 15:04:05.000000"
        StampNano = "Jan _2 15:04:05.000000000"
    )

    2. 时间字符串解析成时间格式

    package main
    import (
      "fmt"
      "time"
    )
    func main() {
      timeStr := "2018-01-01"
      fmt.Println("timeStr:", timeStr)
      t, _ := time.Parse("2006-01-02", timeStr)
      fmt.Println(t.Format(time.UnixDate))
    }
    

    3. 获取当天零点时间戳

    方法1

    package main
    import (
      "fmt"
      "time"
    )
    func main() {
      timeStr := time.Now().Format("2006-01-02")
      t, _ := time.Parse("2006-01-02", timeStr)
      fmt.Println(t.Format(time.UnixDate))
      //Unix返回早八点的时间戳,减去8个小时
      timestamp := t.UTC().Unix() - 8*3600
      fmt.Println("timestamp:", timestamp)
    }
    

    方法2

    package main
    import (
      "fmt"
      "time"
    )
    func main() {
      now := time.Now()
      t, _ := time.ParseInLocation("2006-01-02", now.Format("2006-01-02"), time.Local)
      timestamp := t.Unix()
      fmt.Println(timestamp)
    }
    /*
    time.Local本地时区
      var Local *Location = &localLoc
    以及UTC时区
      var UTC *Location = &utcLoc
    还可以替换成指定时区
      //func LoadLocation(name string) (*Location, error)
      loc, _ := time.LoadLocation("Europe/Berlin")
    If the name is "" or "UTC", LoadLocation returns UTC. If the name is "Local", LoadLocation returns Local.
    */
    

    补充:Golang中获取当天0点的格式化时间

    如下所示:

    EndDateLimit := time.Now().Format("2006-01-02 00:00:00")

    取当天某个整点的时间戳

    now := time.Now().Unix()
    muteEndTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 8, 0, 0, 0, time.Local).Unix()
    muteStartTime := time.Date(time.Now().Year(), time.Now().Month(), time.Now().Day(), 22, 0, 0, 0, time.Local).Unix()

    本地当前时间戳(10位)

    fmt.Println(time.Now().Unix()) //1468479251

    本地当前时间戳(19位)

    fmt.Println(time.Now().UnixNano()) //1468480006774460462

    时间戳转时间

    fmt.Println(time.Unix(1389058332, 0).Format("2006-01-02 15:04:05")) //2014-01-07 09:32:12

    时间转时间戳

    fmt.Println(time.Date(2014, 1, 7, 5, 50, 4, 0, time.Local).Unix())

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持站长博客。如有错误或未考虑完全的地方,望不吝赐教。

    js
    下一篇:没有了