在Go语言中,Date.now()的等效方式是什么?

10
在JavaScript中,我可以这样赋值: var now = Date.now(); 然后将now用作数字变量进行计算。
Go语言中的time.Time类型似乎不能满足此需求。那么,Go语言中等价于JavaScript的Date.now()是什么?

可能在Go语言中获取Unix时间戳(自纪元以来的当前时间,以秒为单位) - Jonathan Lonowski
6个回答

18

Date.now() 返回自纪元以来的毫秒数(以协调世界时为准)

now() 方法返回从 1970 年 1 月 1 日 00:00:00 UTC 至今经过的毫秒数,作为一个数字。

要在 Go 中获取这个值,可以使用以下代码:

time.Now().UTC().UnixNano() / 1e6

或自Go版本1.17以来

time.Now().UTC().UnixMilli()

/ 1e6 部分是什么作用? - anna
1
UnixNano() 返回纳秒。要从纳秒转换为毫秒,需要除以1000000。 - sberry

3
您可以使用"time"包中的"Now"函数,具体如下:Now
package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Now())
    fmt.Println(time.Now().Date())
}

示例输出:

2009-11-10 23:00:00 +0000 UTC
2009 November 10

以下是来自文档的函数解释:

func Now() Time

现在返回当前本地时间。
func (t Time) Date() (year int, month Month, day int)

Date会返回t发生的年份,月份和日期。

演示示例中查看。


3

Date.Now() 返回当前的UTC日期和时间,格式为epoch(unix)。在 Go 语言中,它的等效代码是:

time.Now().Unix()

time.Now() 返回当前的时间。调用Unix()会将该时间转换为epoch或unix时间,即从1970年1月1日UTC起经过的秒数。

完整的 Go 文档


1
在 Go 语言中,您可以使用方法 time.Now().Date()

0
在 Go 中,您可以使用这些方法。
package main

import (
    "fmt"
    "time"
)
func main() {

    currentTime := time.Now()
    
    fmt.Println(currentTime.Date())  //

    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"))

//  2021 February 10
//  Current Time in String:  2021-02-10 11:47:30.5807222 +0530 +0530 m=+0.001994001
//  MM-DD-YYYY :  02-10-2021
//  YYYY-MM-DD :  2021-02-10
//  YYYY.MM.DD :  2021.02.10 11:47:30
//  YYYY#MM#DD {Special Character} :  2021#02#10
//  YYYY-MM-DD hh:mm:ss :  2021-02-10 11:47:30
//  Time with MicroSeconds:  2021-02-10 11:47:30.580722
//  Time with NanoSeconds:  2021-02-10 11:47:30.580722200
//  ShortNum Month :  2021-2-10
//LongMonth :  2021-February-10
//ShortMonth :  2021-Feb-10
//ShortYear :  21-Feb-10
//LongWeekDay :  2021-02-10 11:47:30 Wednesday
//  ShortWeek Day :  2021-02-10 Wed
//ShortDay :  Wed 2021-02-10
//  Short Hour Minute Second:  2021-02-10 11:47:30
//  Short Hour Minute Second:  2021-02-10 11:47:30 AM
//  Short Hour Minute Second:  2021-02-10 11:47:30 am

}

0

Go

time.Now().UTC().UnixMilli()

参考链接:https://pkg.go.dev/time#Time.UnixMilli

注意:我是在使用 go 1.20 时发现这个问题的。

Javascript

Date.now()

两者将具有相同的结果:1677469641253

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接