node.js mySQL NOW()给出的日期错误


node.js mySQL NOW() is giving the wrong date

我有一个混合运行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

我真的不知道他们为什么到处都是。不知道该配置什么,因为我在节点中看到的关于日期的答案到处都是。当在node(使用sequelize)中运行SQL查询时,我的主要困惑是NOW()插入了一个休息3小时的日期。无论如何,如果有人能帮忙,我将不胜感激。

始终确保您的日期存储在UTC中。然后在检索时根据您的意愿设置日期格式。