英文:
Get current time as formatted string in Go?
问题
获取当前时间戳并转换为字符串的最佳方法是什么?我需要日期和时间,例如YYYYMMDDhhmmss格式。
英文:
What's the best way to get the current timestamp in Go and convert to string? I need both date and time in eg. YYYYMMDDhhmmss format.
答案1
得分: 176
使用time.Now()
函数和time.Format()
方法。
t := time.Now()
fmt.Println(t.Format("20060102150405"))
打印出20110504111515
,或者至少几分钟前是这样的。(我在东部夏令时。)在时间包中定义了几个预定义的时间格式的常量。
如果你更喜欢使用UTC而不是本地时区,可以使用time.Now().UTC()
。
英文:
Use the time.Now()
function and the time.Format()
method.
t := time.Now()
fmt.Println(t.Format("20060102150405"))
prints out 20110504111515
, or at least it did a few minutes ago. (I'm on Eastern Daylight Time.) There are several pre-defined time formats in the constants defined in the time package.
You can use time.Now().UTC()
if you'd rather have UTC than your local time zone.
答案2
得分: 86
所有其他的回答对于从谷歌来寻找“go中的时间戳”这个问题的人来说都是非常误导的!YYYYMMDDhhmmss不是一个“时间戳”。
要在go中获取一个日期的“时间戳”(从1970年1月开始的秒数),正确的函数是Time.Unix(),它确实返回一个整数。
英文:
All the other response are very miss-leading for somebody coming from google and looking for "timestamp in go"! YYYYMMDDhhmmss is not a "timestamp".
To get the "timestamp" of a date in go (number of seconds from january 1970), the correct function is Time.Unix(), and it really return an integer
答案3
得分: 76
为了提高可读性,最好在time包中使用RFC常量(我认为)
import "fmt"
import "time"
func main() {
fmt.Println(time.Now().Format(time.RFC850))
}
英文:
For readability, best to use the RFC constants in the time package (me thinks)
import "fmt"
import "time"
func main() {
fmt.Println(time.Now().Format(time.RFC850))
}
答案4
得分: 36
使用 time.Now() 和 time.Format() 函数(因为 Go 1.0.3 中不再存在 time.LocalTime() 函数)
t := time.Now()
fmt.Println(t.Format("20060102150405"))
在线演示(在 playground 中将日期固定在过去,不用在意)
英文:
Use the time.Now() and time.Format() functions (as time.LocalTime() doesn't exist anymore as of Go 1.0.3)
t := time.Now()
fmt.Println(t.Format("20060102150405"))
Online demo (with date fixed in the past in the playground, never mind)
答案5
得分: 10
在这篇文章中可以找到更多信息:在golang中以不同格式获取当前日期和时间
这是一些不同格式的示例:
package main
import (
"fmt"
"time"
)
func main() {
currentTime := time.Now()
fmt.Println("当前时间字符串:", 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 {特殊字符}:", currentTime.Format("2006#01#02"))
fmt.Println("YYYY-MM-DD hh:mm:ss:", currentTime.Format("2006-01-02 15:04:05"))
fmt.Println("带微秒的时间:", currentTime.Format("2006-01-02 15:04:05.000000"))
fmt.Println("带纳秒的时间:", currentTime.Format("2006-01-02 15:04:05.000000000"))
fmt.Println("短数字月份:", currentTime.Format("2006-1-02"))
fmt.Println("长月份:", currentTime.Format("2006-January-02"))
fmt.Println("短月份:", currentTime.Format("2006-Jan-02"))
fmt.Println("短年份:", currentTime.Format("06-Jan-02"))
fmt.Println("长星期几:", currentTime.Format("2006-01-02 15:04:05 Monday"))
fmt.Println("短星期几:", currentTime.Format("2006-01-02 Mon"))
fmt.Println("短日期:", currentTime.Format("Mon 2006-01-2"))
fmt.Println("短时分秒:", currentTime.Format("2006-01-02 3:4:5"))
fmt.Println("短时分秒:", currentTime.Format("2006-01-02 3:4:5 PM"))
fmt.Println("短时分秒:", currentTime.Format("2006-01-02 3:4:5 pm"))
}
输出结果为:
当前时间字符串: 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 {特殊字符}: 2017#07#04
YYYY-MM-DD hh:mm:ss: 2017-07-04 00:47:20
带微秒的时间: 2017-07-04 00:47:20.142475
带纳秒的时间: 2017-07-04 00:47:20.142475100
短数字月份: 2017-7-04
长月份: 2017-July-04
短月份: 2017-Jul-04
短年份: 17-Jul-04
长星期几: 2017-07-04 00:47:20 Tuesday
短星期几: 2017-07-04 Tue
短日期: Tue 2017-07-4
短时分秒: 2017-07-04 12:47:20
短时分秒: 2017-07-04 12:47:20 AM
短时分秒: 2017-07-04 12:47:20 am
英文:
Find more info in this post: Get current date and time in various format in golang
This is a taste of the different formats that you'll find:
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"))
}
The output is:
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
答案6
得分: 3
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
英文:
https://golang.org/src/time/format.go specified
For parsing time 15
is used for Hours, 04
is used for minutes, 05
for seconds.
For parsing Date 11
, Jan
, January
is for months, 02
, Mon
, Monday
for Day of the month, 2006
for year and of course MST
for zone
But you can use this layout as well, which I find very simple. "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
得分: 2
您可以简单地使用像***strconv.Itoa(int(time.Now().Unix()))***这样的方式。
英文:
You can simply use like strconv.Itoa(int(time.Now().Unix()))
答案8
得分: 1
作为对@Bactisme回答的回应,获取当前时间戳(以毫秒为单位,例如)的方法如下:
msec := time.Now().UnixNano() / 1000000
资源:https://gobyexample.com/epoch
英文:
As an echo to @Bactisme's response, the way one would go about retrieving the current timestamp (in milliseconds, for example) is:
msec := time.Now().UnixNano() / 1000000
Resource: https://gobyexample.com/epoch
答案9
得分: -4
为了回答确切的问题:
import "github.com/golang/protobuf/ptypes"
Timestamp, _ = ptypes.TimestampProto(time.Now())
英文:
To answer the exact question:
import "github.com/golang/protobuf/ptypes"
Timestamp, _ = ptypes.TimestampProto(time.Now())
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论