如何使用没有数字偏移量的默认区域格式化日期

如果我从数据库中扫描日期到包含time.Time日期的结构,则默认情况下它将如下所示:

"2019-11-27T16:38:55+07:00"

有没有办法像这样格式化它,而无需重新解析所有具有时间类型的时间?

"0001-01-01T00:00:00Z"

我可以手动重新格式化所有内容,但是必须有更好的方法。因为我要扫描一个切片,才能重新格式化日期,所以我只需要循环结果即可。

有什么建议吗?

niuliang1023 回答:如何使用没有数字偏移量的默认区域格式化日期

您可以使用time.Time的{​​{3}}方法来获取UTC时区中的时间值,然后再次将其重新格式化为字符串,然后您将获得UTC中的等效日期。

str1 := "2019-11-27T16:38:55+07:00"
tme1,_ := time.Parse(time.RFC3339,str1)

tme2 := tme1.UTC()
str2 := tme2.Format(time.RFC3339)

fmt.Println("str1",str1) // str1 2019-11-27T16:38:55+07:00
fmt.Println("str2",str2) // str2 2019-11-27T09:38:55Z

工作场所.UTC()


这是供前端应用程序使用的API,要求该API的格式如下。

无论是使用javascript,go还是任何其他编程/脚本语言,解析不同时区中的等效日期字符串都将得出等效日期。看看下面的js示例:

console.log(new Date("2019-11-27T16:38:55+07:00").toString())
// "Wed Nov 27 2019 16:38:55 GMT+0700 (Western Indonesia Time)"

console.log(new Date("2019-11-27T09:38:55Z").toString())
// "Wed Nov 27 2019 16:38:55 GMT+0700 (Western Indonesia Time)"

请参阅两个日期解析操作,在解析并转换为字符串后会生成相同的字符串

本文链接:https://www.f2er.com/2814687.html

大家都在问