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

我正在尝试将此日期字符串(“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


森栏
浏览 127回答 2
2回答

慕姐8265434

请注意,您的输入字符串是有效的ISO 8601 格式。然而,对于 JSON 序列化,JavaScript 使用略有不同(但仍然完全有效)的 ISO 8601 日期格式样式,其中只有 3 位数字用于小数秒(提供毫秒分辨率)并且时区调整为协调世界时(UTC ) ,(又名 GMT+0,或“祖鲁”时区)指定一个Z.// JavaScriptJSON.stringify(new Date()); // => "2018-10-30T15:22:30.293Z"// Millisecond resolution ─────────────────────────────┺┻┛┃// "Zulu" (UTC) time zone ────────────────────────────────┚您可以将时间戳转换为 JavaScript 样式,方法是首先解析输入字符串,然后通过方法转换为祖鲁时间UTC(),然后使用所需的输出格式进行格式化。例如(去游乐场):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}

猛跑小猪

您可以使用 RFC3339 格式转换它: unitTimeInRFC3339 :=time.Now().Format(time.RFC3339)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go