我有一个运行MySQL,PHP和node.js的Web应用程序。 MySQL和PHP为我报告了正确的时间,但我似乎无法弄清楚如何让node.js遵守。
Mysql Now()结果
MariaDB [seo]> select NOW();
+---------------------+
| NOW() |
+---------------------+
| 2014-10-20 22:51:53 |
此外,从我运行NOW()的PHP代码执行的SQL查询给出了上面的日期。
但是,当节点从SQL查询中执行NOW()时,我得到的日期是3个小时。
我环顾四周,似乎无法找到解决方案。我已经尝试为节点设置环境变量,如下所示..
process.env.TZ = 'America/New_York';
但它似乎没有什么区别。我的节点脚本不是永久运行的,它们只能通过命令/ shell脚本调用。
var d = new Date();
var n = d.toLocaleString();
var j = d.toISOString();
var l = d.toUTCString();
console.log('toLocaleString(): ' + n + ', toISOString(): ' + j + ', toUTCString(): ' + l);
给出输出:
toLocaleString(): Mon Oct 20 2014 22:51:53 GMT-0400 (EDT), toISOString(): 2014-10-21T02:51:53.489Z, toUTCString(): Tue, 21 Oct 2014 02:51:53 GMT
我真的不确定为什么他们到处都是。不知道要配置什么作为我看到的关于节点中的日期的答案到处都是。我在节点中运行SQL查询时遇到的主要困惑(使用sequelize),NOW()正在插入3个小时的日期。无论如何,如果有人能提供帮助,肯定会受到赞赏。
答案 0 :(得分:0)
始终确保您的日期以UTC格式存储。然后在检索时根据需要格式化日期。