在Go中获取当前时间戳并转换为字符串的最佳方法是什么?我需要例如日期和时间。 YYYYMMDDhhmmss格式。
答案 0 :(得分:120)
使用time.Now()
功能和time.Format()
方法。
t := time.Now()
fmt.Println(t.Format("20060102150405"))
打印出20110504111515
,或者至少在几分钟前打印出来。 (我在东部夏令时。)时间包中定义的constants有几种预定义的时间格式。
如果您希望使用UTC而不是当地时区,则可以使用time.Now().UTC()
。
答案 1 :(得分:56)
对于那些来自Google并且正在寻找"时间戳的人来说,所有其他回复都非常缺乏领先地位#34;! YYYYMMDDhhmmss不是"时间戳"。
获取"时间戳" go中的日期(1970年1月的秒数),正确的函数是.Unix(),它实际上返回一个整数
答案 2 :(得分:51)
为了便于阅读,最好在时间包中使用RFC常量(我认为)
import "fmt"
import "time"
func main() {
fmt.Println(time.Now().Format(time.RFC850))
}
答案 3 :(得分:31)
使用time.Now()和time.Format()函数(因为从Go 1.0.3开始,time.LocalTime()不再存在)
t := time.Now()
fmt.Println(t.Format("20060102150405"))
Online demo(过去在操场上修好了日期,没关系)
答案 4 :(得分:1)
作为对@ Bactisme的回应的回应,人们去检索当前时间戳(例如以毫秒为单位)的方式是:
msec := time.Now().UnixNano() / 1000000
答案 5 :(得分:1)
答案 6 :(得分:0)
https://golang.org/src/time/format.go已指定
对于解析时间,15
用于小时,04
用于分钟,05
用于秒。
对于解析日期11
,Jan
,January
表示月份,02
,Mon
,Monday
表示月份, 2006
代表年份,当然MST
代表区域
但是您也可以使用此布局,我觉得这很简单。 "Mon Jan 2 15:04:05 MST 2006"
const layout = "Mon Jan 2 15:04:05 MST 2006"
userTimeString := "Fri Dec 6 13:05:05 CET 2019"
t, _ := time.Parse(layout, userTimeString)
fmt.Println("Server: ", t.Format(time.RFC850))
//Server: Friday, 06-Dec-19 13:05:05 CET
mumbai, _ := time.LoadLocation("Asia/Kolkata")
mumbaiTime := t.In(mumbai)
fmt.Println("Mumbai: ", mumbaiTime.Format(time.RFC850))
//Mumbai: Friday, 06-Dec-19 18:35:05 IST
答案 7 :(得分:-7)
回答确切的问题:
import "github.com/golang/protobuf/ptypes"
Timestamp, _ = ptypes.TimestampProto(time.Now())