gpt4 book ai didi

go - Go 在Linux 和macOS 上RFC3339 时间格式化结果不一样

转载 作者:IT王子 更新时间:2023-10-29 01:40:33 34 4
gpt4 key购买 nike

我在下面运行了 go 代码。

package main

import (
"fmt"
"strconv"
"time"
)

func main() {
i, err := strconv.ParseInt("1405544146", 10, 64)
if err != nil {
panic(err)
}
tm := time.Unix(i, 0).Format(time.RFC3339)
fmt.Println(tm)
fmt.Println(time.RFC3339)

}

那么Linux上的结果就是

2014-07-16T20:55:46Z
2006-01-02T15:04:05Z07:00

在 macOS 上是

2014-07-17T05:55:46+09:00
2006-01-02T15:04:05Z07:00

时间相同,但格式化后的结果不同。你知道原因吗?

最佳答案

不要仓促下结论。检查所有证据。例如,考虑本地时区。

Package time

import "time" 

func Unix

func Unix(sec int64, nsec int64) Time

Unix returns the local Time corresponding to the given Unix time, sec seconds and nsec nanoseconds since January 1, 1970 UTC.


例如,

package main

import (
"fmt"
"runtime"
"strconv"
"time"
)

func main() {
i, err := strconv.ParseInt("1405544146", 10, 64)
if err != nil {
panic(err)
}
t := time.Unix(i, 0)
fmt.Println(t)
fmt.Println(t.Format(time.RFC3339))
fmt.Println(time.RFC3339)
fmt.Println(runtime.GOOS, runtime.GOARCH, runtime.Version())
}

Playground :https://play.golang.org/p/UH6o57YckiV

输出( Playground ):

2014-07-16 20:55:46 +0000 UTC
2014-07-16T20:55:46Z
2006-01-02T15:04:05Z07:00
nacl amd64p32 go1.12

输出(Linux):

2014-07-16 16:55:46 -0400 EDT
2014-07-16T16:55:46-04:00
2006-01-02T15:04:05Z07:00
linux amd64 devel +5b68cb65d3 Thu Mar 28 23:49:52 2019 +0000

不同的时区(UTC 与 EDT)因此日期和时间的格式不同。


在您的示例中,您有 2014-07-16T20:55:46Z2014-07-17T05:55:46+09:00,不同的时区不同格式的日期和时间。

关于go - Go 在Linux 和macOS 上RFC3339 时间格式化结果不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55409774/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com