【发布时间】:2014-08-21 12:38:13
【问题描述】:
我们正在尝试使用以下查询插入日期时间值 - 插入产品 (name,createdon) 值 ('product1', now()) 我们正在使用 sequelize 触发原始查询。 该值以 UTC 格式存储。
直接从 MySQL 触发相同的查询,将值存储在本地时间。
我们需要以本地时间而不是 UTC 存储的值。我们如何在这里实现这一目标?
【问题讨论】:
我们正在尝试使用以下查询插入日期时间值 - 插入产品 (name,createdon) 值 ('product1', now()) 我们正在使用 sequelize 触发原始查询。 该值以 UTC 格式存储。
直接从 MySQL 触发相同的查询,将值存储在本地时间。
我们需要以本地时间而不是 UTC 存储的值。我们如何在这里实现这一目标?
【问题讨论】:
我也遇到了同样的问题。在连接sequlize和Mysql的时候可以通过timezone。所以它会一直使用这个timezone 来保存数据。这是我发现的:
var sequelize = new Sequelize('database', 'username', 'password', {
timezone: '+05:30', //here you can pass timezone
host: 'host',
logging: true,
});
但这不是一个好的解决方案,因为如果您从 2 个不同的时区使用您的应用程序,那么它将为两个不同的时区使用相同的时区,因此数据将不正确。
好的解决方案是始终使用 UTC timezone:'00:00' 来保存数据,并在获取结果时以用户适当的时区格式显示。这意味着如果用户从US 访问网站,则以US's 格式操作并显示日期时间,如果您从India 访问数据,则以India's 格式操作日期时间并显示。为此,您需要进行一些 DateTime 操作。对于此操作,您可以使用Moment.js。
【讨论】: