为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
森栏 2023-05-04 17:17:05
我正在尝试将此日期字符串(“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:00Zhttps://play.golang.org/p/gXw39_Y-hpR
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

请注意,您的输入字符串是有效的ISO 8601 格式。


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


// JavaScript

JSON.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

}


查看完整回答
反对 回复 2023-05-04
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您可以使用 RFC3339 格式转换它:

 unitTimeInRFC3339 :=time.Now().Format(time.RFC3339)


查看完整回答
反对 回复 2023-05-04
  • 2 回答
  • 0 关注
  • 126 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信