如何正确使用time.Parse从Unix时间字符串创建时间对象?

时间:2014-02-25 16:15:16

标签: go

我们正在尝试将一个unix时间戳(可用作字符串)解析为时间对象,但是,以下内容不起作用:

package main

import (
"fmt"
"time"
)

func main() {
    t, _ := time.Parse(time.UnixDate, "1393344464")
    fmt.Printf("%v", t)
}

它一直返回0001-01-01 00:00:00 +0000 UTC。 Go Playground.

2 个答案:

答案 0 :(得分:5)

前言 - 永远不要忽略errort, _ :=),你会错过重要的错误信息并一直混淆。

关于您的问题 - 您需要使用time.Unix来实现您的目标。

package main

import (
  "log"
  "time"
)

func main() {
  t, err := time.Parse(time.UnixDate, "1393344464")
  if err != nil {
    log.Println(err)
  }
  log.Printf("%v\n", t)

  t = time.Unix(1393344464,0)
  log.Printf("%v\n", t)
}

答案 1 :(得分:5)

首先,你有一个错误,你没有检查它:http://play.golang.org/p/7ruFfv5QHT这是不好的做法(这些错误有助于调试!:)使用它们!)

UnixDate用于日期的unix字符串表示;不是时间戳。来自:UnixDate = "Mon Jan _2 15:04:05 MST 2006"

使用time.Unix

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.Unix(1393324260, 0)
    fmt.Printf("%v", t)
}

http://play.golang.org/p/gj_4EtiOVY