gpt4 book ai didi

postgresql - 您如何在 UTC 而不是本地时区中对 pq.NullTime 进行 JSON Marshall?

转载 作者:IT王子 更新时间:2023-10-29 02:09:05 26 4
gpt4 key购买 nike

我在 postgres 表中有日期。日期以 UTC 时区存储。

来自 python 的示例。

roster = Roster.objects.get(id=266438)
roster.start_timestamp
Out[11]: datetime.datetime(2018, 9, 7, 15, 0, tzinfo=<UTC>)

当我从 go lib/pq 中编码这些日期时,我的本地时区以某种方式被应用。

func (nt *pq.NullTime) MarshalJSON() ([]byte, error) {
if !nt.Valid {
return []byte("\"\""), nil
}
val := fmt.Sprintf("\"%s\"", nt.Time.Format("01/02/2006 15:04:05"))
fmt.Println("Marshalling FMPDateTime", nt, val)
return []byte(val), nil
}

示例日志:

Marshalling DateTime &{2018-09-08 00:30:00 +0930 ACST true} "09/08/2018 00:30:00"

2018-09-08 00:30:00 +0930 ACST 2018-09-07 15:00:00 UTC。

您如何在 UTC 而不是本地时区中对 pq.NullTime 进行 JSON 编码?

最佳答案

库通常使用本地时区构造 time.Time 值,但时间点仍然相同,因此您不必担心这一点。

如果您想专门显示/输出 UTC 时区的时间,请将您的时间“切换”到 UTC 时区。为此,您可以使用 Time.UTC()方法:

val := fmt.Sprintf("\"%s\"", nt.Time.UTC().Format("01/02/2006 15:04:05"))

就这些。

另请注意,如果您的 NullTime 无效,我宁愿输出 JSON null 而不是空字符串。

关于postgresql - 您如何在 UTC 而不是本地时区中对 pq.NullTime 进行 JSON Marshall?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52511877/

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