我有一个在 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/