如何使本地日期时区等于 (+8) 到服务器时区 (UTC) 。节点 js 和 AWS

Posted

技术标签:

【中文标题】如何使本地日期时区等于 (+8) 到服务器时区 (UTC) 。节点 js 和 AWS【英文标题】:How to make Local Date Time Zone to be equal (+8) to Server Time Zone (UTC) . Node js and AWS 【发布时间】:2018-08-01 19:55:12 【问题描述】:

我有一个函数可以根据注册日期计算数据库的价格。当我在本地和 AWS 服务器中检查结果时,结果不同。 我将本地服务器的日期日志与 AWS 服务器进行了比较,结果不同。

本地和AWS服务器查询中使用的日期结果:

本地: 2018 年 2 月 1 日星期四 08:00:00 GMT+0800 (+08) ===== 2018 年 3 月 1 日星期四 08:00:00 GMT+0800 (+08)

服务器: 2018 年 2 月 2 日星期五 00:00:00 GMT+0000 (UTC) ===== 2018 年 3 月 2 日星期五 00:00:00 GMT+0000 (UTC)

代码:

date = new Date(); // set current date
from = new Date(date.getFullYear(), date.getMonth(), 1);
to = new Date(date.getFullYear(), date.getMonth()+1, 1);
from.setDate(from.getDate() + 1); // set date + 1
from.setHours(from.getHours() - from.getUTCHours());
to.setDate(to.getDate() + 1); // set date + 1
to.setHours(to.getHours() - to.getUTCHours());

本地 from 和 to 的结果:

2018-01-01T00:00:00.000Z
2018-02-01T00:00:00.000Z

服务器中 from 和 to 的结果:

2018-01-02T00:00:00.000Z
2018-02-02T00:00:00.000Z
这是导致结果不同的原因吗? 如何解决这个问题?

【问题讨论】:

这些时间正好相隔 24 小时 - 所以,是的,有些不对劲 - 但是,什么是“日期日志”? 感谢@JaromandaX 的回复。日期日志是我在本地测试代码并在 AWS 服务器上尝试时将在过滤器中使用的日期的结果。 当然可以,但为什么它们相隔 24 小时?它们是如何创建的(从外观上看是不正确的) 我的坏@JaromandaX。我已经更新了我的问题。我添加了获取 from 和 to 日期的代码,用于按日期过滤数据。结果如上所示。 from.setHours(from.getHours() - from.getUTCHours()); 为什么?你认为这有什么成就? new Date(2018,1,1) 无论您在哪个时区,都应该得到完全相同的结果...2018-02-01T00:00:00Z - 那您为什么要摆弄时间? 【参考方案1】:

所以题体改了,不再有意义,但是题目中的问题可以回答:

你可以使用Date.UTC构造函数

【讨论】:

我已经回滚了他们的编辑。如此激进的变化是不可接受的。

以上是关于如何使本地日期时区等于 (+8) 到服务器时区 (UTC) 。节点 js 和 AWS的主要内容,如果未能解决你的问题,请参考以下文章

如何在Javascript中将日期转换为其他时区[重复]

PostgreSQL:无法使用 DST 使时区正常工作

日期、时间、DSL 和时区信息处理

从一个本地时区到另一个本地时区的 Python 日期时间转换(+ 奖励 DST)

PHP,Codeigniter:如何在Web应用程序中根据用户时区/位置设置日期/时间?

如何确保保存在数据库中的UTC日期等于Django中指定时区的午夜[重复]