在Go语言中获取格式化字符串形式的当前时间?

bvhaajcl  于 2023-01-15  发布在  Go
关注(0)|答案(9)|浏览(128)

在Go语言中获取当前时间戳并将其转换为字符串的最佳方法是什么?我需要日期和时间都是YYYYMMDDhhmmss格式。

kgqe7b3p

kgqe7b3p1#

使用time.Now()函数和time.Format()方法。

t := time.Now()
fmt.Println(t.Format("20060102150405"))

打印出20110504111515,或者至少几分钟前是这样的(我使用的是东部夏令时)。time包中定义的常量中有几种预定义的时间格式。
如果您希望使用UTC而不是本地时区,则可以使用time.Now().UTC()

3wabscal

3wabscal2#

所有其他的回应都是非常错误的a-对于来自谷歌的人来说,他们在寻找“时间戳”!YYYYMMDDhmmss不是“时间戳”。
要在go中获取日期的“时间戳”(从1970年1月算起的秒数),正确的函数是Time.Unix(),它实际上返回一个整数

zbq4xfa0

zbq4xfa03#

为了可读性,最好使用time包中的RFC常量(我认为)

import "fmt" 
import "time"

func main() {
    fmt.Println(time.Now().Format(time.RFC850))
}
crcmnpdw

crcmnpdw4#

使用time.now()和time.format()函数(因为time.LocalTime()在Go语言1.0.3中已经不存在了)

t := time.Now()
fmt.Println(t.Format("20060102150405"))

Online demo(日期固定在过去的操场上,没关系)

bq3bfh9z

bq3bfh9z5#

在此帖子中查找更多信息:Get current date and time in various format in golang
这是你会发现的不同格式的味道:

package main

import (
    "fmt"
    "time"
)

func main() {
    currentTime := time.Now()
    fmt.Println("Current Time in String: ", currentTime.String())
    fmt.Println("MM-DD-YYYY : ", currentTime.Format("01-02-2006"))
    fmt.Println("YYYY-MM-DD : ", currentTime.Format("2006-01-02"))
    fmt.Println("YYYY.MM.DD : ", currentTime.Format("2006.01.02 15:04:05"))
    fmt.Println("YYYY#MM#DD {Special Character} : ", currentTime.Format("2006#01#02"))
    fmt.Println("YYYY-MM-DD hh:mm:ss : ", currentTime.Format("2006-01-02 15:04:05"))
    fmt.Println("Time with MicroSeconds: ", currentTime.Format("2006-01-02 15:04:05.000000"))
    fmt.Println("Time with NanoSeconds: ", currentTime.Format("2006-01-02 15:04:05.000000000"))
    fmt.Println("ShortNum Month : ", currentTime.Format("2006-1-02"))
    fmt.Println("LongMonth : ", currentTime.Format("2006-January-02"))
    fmt.Println("ShortMonth : ", currentTime.Format("2006-Jan-02"))
    fmt.Println("ShortYear : ", currentTime.Format("06-Jan-02"))
    fmt.Println("LongWeekDay : ", currentTime.Format("2006-01-02 15:04:05 Monday"))
    fmt.Println("ShortWeek Day : ", currentTime.Format("2006-01-02 Mon"))
    fmt.Println("ShortDay : ", currentTime.Format("Mon 2006-01-2"))
    fmt.Println("Short Hour Minute Second: ", currentTime.Format("2006-01-02 3:4:5"))
    fmt.Println("Short Hour Minute Second: ", currentTime.Format("2006-01-02 3:4:5 PM"))
    fmt.Println("Short Hour Minute Second: ", currentTime.Format("2006-01-02 3:4:5 pm"))
}

输出为:

Current Time in String:  2017-07-04 00:47:20.1424751 +0530 IST
MM-DD-YYYY :  07-04-2017
YYYY-MM-DD :  2017-07-04
YYYY.MM.DD :  2017.07.04 00:47:20
YYYY#MM#DD {Special Character} :  2017#07#04
YYYY-MM-DD hh:mm:ss :  2017-07-04 00:47:20
Time with MicroSeconds:  2017-07-04 00:47:20.142475
Time with NanoSeconds:  2017-07-04 00:47:20.142475100
ShortNum Month :  2017-7-04
LongMonth :  2017-July-04
ShortMonth :  2017-Jul-04
ShortYear :  17-Jul-04
LongWeekDay :  2017-07-04 00:47:20 Tuesday
ShortWeek Day :  2017-07-04 Tue
ShortDay :  Tue 2017-07-4
Short Hour Minute Second:  2017-07-04 12:47:20
Short Hour Minute Second:  2017-07-04 12:47:20 AM
Short Hour Minute Second:  2017-07-04 12:47:20 am
vmdwslir

vmdwslir6#

https://golang.org/src/time/format.go指定对于解析时间,15用于表示小时,04用于表示分钟,05用于表示秒。
用于解析日期11JanJanuary表示月份,02MonMonday表示月份中的日期,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

DEMO

eqfvzcg8

eqfvzcg87#

作为对@Bactisme响应的回应,检索当前时间戳(例如,以毫秒为单位)的方法是:

msec := time.Now().UnixNano() / 1000000

资源:https://gobyexample.com/epoch

z31licg0

z31licg08#

您可以简单地使用***strconv.Itoa(int(time.Now().Unix())***

dbf7pr2w

dbf7pr2w9#

为了回答这个问题:

import "github.com/golang/protobuf/ptypes"

Timestamp, _ = ptypes.TimestampProto(time.Now())

相关问题