如何使本地日期时区等于 (+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的主要内容,如果未能解决你的问题,请参考以下文章
从一个本地时区到另一个本地时区的 Python 日期时间转换(+ 奖励 DST)