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

时间:2014-10-21 02:54:59

标签: javascript php node.js datetime

我有一个运行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个小时的日期。无论如何,如果有人能提供帮助,肯定会受到赞赏。

1 个答案:

答案 0 :(得分:0)

始终确保您的日期以UTC格式存储。然后在检索时根据需要格式化日期。