【发布时间】:2014-10-21 02:54:59
【问题描述】:
我有一个混合运行 MySQL、PHP 和 node.js 的 Web 应用程序。 MySQL 和 PHP 为我报告了正确的时间,但我似乎无法弄清楚如何让 node.js 遵守。
Mysql Now() 结果
MariaDB [seo]> select NOW();
+---------------------+
| NOW() |
+---------------------+
| 2014-10-20 22:51:53 |
此外,从我的 PHP 代码运行 NOW() 执行的 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 小时后的日期。无论如何,如果有人可以提供帮助,我们将不胜感激。
【问题讨论】:
-
您的“toLocaleString”调用似乎正在按您的预期输出日期。阅读 javascript 中的日期 - 它们始终以 UTC 格式存储。
标签: javascript php node.js datetime