gpt4 book ai didi

go - 如何将带时区的日期转换为 Javascript ISO 格式?

转载 作者:数据小太阳 更新时间:2023-10-29 03:10:21 25 4
gpt4 key购买 nike

我正在尝试将此日期字符串 ("2018-10-29T11:48:09.180022-04:00") 转换为 Go 中的 ISO 格式。但是做不到。谁能帮忙?

主要包

import (
"fmt"
"time"
)

func main() {
l,_ := time.Parse("2006-01-02T15:04:05Z07:00", "2018-10-29T15:18:20-04:00")
fmt.Println(l, time.Now(), time.Now().UTC().Format("2006-01-02T15:04:05Z07:00"))
}

输出:

2018-10-29 15:18:20 -0400 -0400 2009-11-10 23:00:00 +0000 UTC m=+0.000000001 2009-11-10T23:00:00Z

https://play.golang.org/p/gXw39_Y-hpR

最佳答案

请注意,您输入的字符串是有效的 ISO 8601 format .

然而,对于 JSON 序列化,JavaScript 使用略有不同(但仍然完全有效)的 ISO 8601 日期格式样式,其中只有 3 位数字用于小数秒(提供毫秒分辨率)并且时区调整为 Coordinated Universal Time (UTC) ,(又名 GMT+0,或“祖鲁”时区)用 Z 指定。

// JavaScript
JSON.stringify(new Date()); // => "2018-10-30T15:22:30.293Z"
// Millisecond resolution ─────────────────────────────┺┻┛┃
// "Zulu" (UTC) time zone ────────────────────────────────┚

您可以通过首先解析输入字符串,然后通过 UTC() method 转换为祖鲁时间,将时间戳转换为 JavaScript 样式。 ,然后使用所需的输出格式进行格式化。

例如 ( Go Playground ):

const (
INPUT_FORMAT = "2006-01-02T15:04:05.999999999-07:00"
OUTPUT_FORMAT = "2006-01-02T15:04:05.000Z"
)

func timestampToJavaScriptISO(s string) (string, error) {
t, err := time.Parse(INPUT_FORMAT, s)
if err != nil {
return "", err
}
return t.UTC().Format(OUTPUT_FORMAT), nil
}

func main() {
s := "2018-10-29T11:48:09.180022-04:00"
s2, err := timestampToJavaScriptISO(s)
if err != nil {
panic(err)
}

fmt.Println(s2)
// 2018-10-29T15:48:09.180Z
}

关于go - 如何将带时区的日期转换为 Javascript ISO 格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53066361/

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