javascript - 比较一个时区的日期与另一时区的日期

标签 javascript mysql node.js wordpress

我有一个在 America/New_York 运行的 MySQL 数据库和一个在 UTC 运行的 Node 服务器。我需要从 Node 对 MySQL 数据库运行查询并比较时间。时间比较非常接近,所以我需要进行时区转换。

注意:这是第三方控制的Wordpress数据库;我无法以任何方式ALTER数据库。

目前,我正在这样做:

comparisonDate = new Date((new Date).setHours(new Date().getHours() - 4)));

特别是从 Node 服务器的 UTC 日期中减去 4 小时以与 MySQL 进行比较。

这工作正常,但我担心夏令时后会发生什么。我宁愿进行转换(我可以保证我提前知道 MySQL 服务器时区)。

moment-timezone看起来很有希望,但是当我这样做时

moment.tz('America/New_York').toDate()

我仍然得到 UTC 时间的日期,而不是 EST/EDT 时间。

如何在 JavaScript 中一致地进行适当的时区转换?

最佳答案

我遇到了同样的时区转换问题。

我确实喜欢这个,而且运行良好。

var moment = require('moment');
var timezone = require('moment-timezone');

var now = timezone(moment()).tz("America/New_York"); 

这里的now变量给出了America/New_York的时间。

夏令时之后,时刻时区会处理这个问题。

在时刻时区,他们有解析歧义部分解释了这种情况。

关于javascript - 比较一个时区的日期与另一时区的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33005942/

相关文章:

javascript - 如果选中具有特定类值的复选框,则禁用 jquery 中的按钮

javascript - 处理断言错误的正确方法以便后续测试可以运行

javascript - 如何从输入文本中删除前导和尾随空格?

php - 如何将特殊字符以UTF-8格式存储在数据库中

javascript - 递归函数输出奇怪的值

php - 数据库查询逻辑问题

php - 计算 Mysql 表上的相同值

javascript - 为什么 node.js 不适合涉及大量 CPU 处理或计算的服务器应用程序?

javascript - 如何在 Node js(nodemailer) 中发送电子邮件而不提供我的电子邮件 ID 和密码?

sql - 无法使用 google cloudSQL 连接所需的端口