为什么我不能将纪元时间转换为字符串?

时间:2019-03-27 04:52:25

标签: go

我有以下程序:

    window.addEventListener('beforeunload', () => {
       socket.disconnect();
    }

我希望将纪元时间打印为字符串。相反,我得到了:

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Now().UnixNano() / int64(time.Millisecond)
    nowString := string(now)
    fmt.Println(nowString)
}

如何解决此错误?

3 个答案:

答案 0 :(得分:0)

如果您使用此处示例中的time的功能-https://gobyexample.com/time-formatting-parsing

,则您将进行大量的计算

也。如果您需要做的只是打印整数,则不必将其转换为字符串,而只需使用格式说明符即可:

func main() {
    now := time.Now().UnixNano() / int64(time.Millisecond)
    //now is an int64 as you may have observed
    fmt.Printf("%d", now)
    //or even fmt.Println(now)
}

答案 1 :(得分:0)

main.go

package main

import "fmt"
import "time"

func main() {
    nanos := time.Now().UnixNano()
    fmt.Println(time.Unix(0, nanos))

    millis := nanos / 1000000
    fmt.Println(millis)
}

答案 2 :(得分:0)

看看strconv

软件包strconv实现与字符串之间的转换 基本数据类型的表示形式。

对于您来说,要将int64的数字转换为string,可能需要使用FormatInt,如下所示:

func FormatInt(i int64,base int)字符串

FormatInt返回给定基数中i的字符串表示形式, 2 <= base <=36。结果使用小写字母“ a”至“ z” 对于数字值> = 10。

convertedString := strconv.FormatInt(YOUR_NUMBER, 10)

这是Epoch (https://gobyexample.com/epoch),使用time包的示例:

func main() {

    now := time.Now()
    secs := now.Unix()
    nanos := now.UnixNano()
    fmt.Println(now)

    millis := nanos / 1000000
    fmt.Println(secs)
    fmt.Println(millis)
    fmt.Println(nanos)

    fmt.Println(time.Unix(secs, 0))
    fmt.Println(time.Unix(0, nanos))
}

输出:

$ go run epoch.go 
2012-10-31 16:13:58.292387 +0000 UTC
1351700038
1351700038292
1351700038292387000
2012-10-31 16:13:58 +0000 UTC
2012-10-31 16:13:58.292387 +0000 UTC