在 Go 中获取当前时间戳并转换为字符串的最佳方法是什么?我需要日期和时间,例如。 YYYYMMDDhhmmss 格式。
使用 time.Now()
函数和 time.Format()
方法。
t := time.Now()
fmt.Println(t.Format("20060102150405"))
打印出 20110504111515
,或者至少在几分钟前打印出来。 (我使用的是东部夏令时间。)时间包中定义的 constants 中有几种预定义的时间格式。
如果您希望使用 UTC 而不是本地时区,则可以使用 time.Now().UTC()
。
对于来自谷歌并寻找“正在运行的时间戳”的人来说,所有其他响应都是非常错误的! YYYYMMDDhhmmss 不是“时间戳”。
要在 go 中获取日期的“时间戳”(从 1970 年 1 月开始的秒数),正确的函数是 .Unix(),它实际上返回一个整数
Get current time as formatted string in Go?
。希望有人会批准。
为了可读性,最好使用 time 包中的 RFC 常量(我认为)
import "fmt"
import "time"
func main() {
fmt.Println(time.Now().Format(time.RFC850))
}
Tuesday, 10-Nov-09 23:00:00 UTC
RFC3339 = "2006-01-02T15:04:05Z07:00"
play.golang.org/p/XmobwWSz5pN golang.org/pkg/time
time.Now().Format(time.RFC3339)
,示例输出:2021-08-19T13:52:51+03:00
使用 time.Now() 和 time.Format() 函数(因为 time.LocalTime() 从 Go 1.0.3 开始不再存在)
t := time.Now()
fmt.Println(t.Format("20060102150405"))
Online demo(操场上的日期固定在过去,没关系)
s := "Actual time is: "+time.Now().String()
在这篇文章中找到更多信息: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
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
作为对@Bactisme 响应的回应,检索当前时间戳(例如以毫秒为单位)的方式是:
msec := time.Now().UnixNano() / 1000000
资源:https://gobyexample.com/epoch
time.Now().UnixMilli()
您可以简单地使用 strconv.Itoa(int(time.Now().Unix()))
要回答确切的问题:
import "github.com/golang/protobuf/ptypes"
Timestamp, _ = ptypes.TimestampProto(time.Now())
Kitchen
常量 (= "3:04PM"
)