【问题标题】:node.js mySQL NOW() is giving the wrong datenode.js mySQL NOW() 给出了错误的日期
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多