我的表中有一个 DATETIME 字段,该字段的显示方式与我返回的内容不同。
为了理解,以下是我在 API 中返回的确切对象字段:
但是,当我使用 PostMan 并查看结果时,时间正在从我返回的时间更改为:
我不明白发生了什么事。我试图将 DATETIME 作为 UTC 时间存储在数据库中,然后将其发送到客户端,客户端将其转换为本地时间。
最佳答案
您没有以 UTC 时间存储日期。 “GMT-0400 (EDT)”表示它们存储在东部时间。其他结果中的 Z 表示 UTC(或 Zulu)时间,根据此规范:http://www.ietf.org/rfc/rfc3339.txt
我希望您的 MySQL 安装将默认时区设置为您的机器所在的时区 ( https://dev.mysql.com/doc/refman/5.5/en/time-zone-support.html ),因此当您添加时间而不指定时区时,会假定它位于默认时区。然后在您的回复中将其转换为 UTC,时间增加四个小时。
您应该在向数据库添加信息时指定时区,和/或更改数据库的默认时区。还可能有另一层“有助于”更改内容,具体取决于您用于访问数据库的 API,因此如果有有关 API 的相关信息,您可以将其添加到您的问题中。
关于javascript - MySQL DateTime 意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37842429/