【发布时间】:2021-04-02 16:37:32
【问题描述】:
我正在尝试使用倒数计时器托管一个应用程序,该计时器从未来给定的 UTC 日期和时间中减去当前的 UTC 日期和时间。但问题在于new Date()、new Date(Date.now()) 等,我一直在获得几个小时的当地时间。如何使用 UTC 的当前时间创建一个新的 Date 对象?
let date = new Date()
date = date.toUTCString().slice(0, date.toUTCString().length - 13);
let time = "17:00:00"
// this is the UTC time of the event, this works hosted
// locally this has to be "12:00:00"
const timeLeft = new Date(`${date} ${time}`) - new Date();
const hoursLeft = Math.floor((timeLeft / (1000 * 60 * 60)));
const minutesLeft = Math.ceil((timeLeft / 1000) / 60 % 60);
// I'm trying to get a consistent hoursLeft on both local and hosted machines
我可能只会使用 moment.js 来避免问题并简化代码,但我仍然很想知道答案。
【问题讨论】:
-
使用Date.UTC?
-
Date.UTC 不起作用,因为您必须在 arg 中给它日期,
Date.UTC()是 NaN。我需要一个使用 UTC 时间的Date.now()。 -
转换为纪元时间?转换为 GMT 字符串并从中创建日期?在不知道您的输入实际是什么的情况下(例如,如果您有一个有效的 UTC 字符串,那么这似乎是一个转换问题),很难知道具体问题是什么。
-
输入与问题无关,
new Date(date, time)按预期工作,并且始终采用 UTC。问题出在new Date()。那个在本地提供不同的日期并托管,我希望它始终以UTC的当前时间创建新的日期。 -
你是对的。因为答案是,
new Date()is 是“UTC 当前时间的日期对象”。查看get UTC date (not UTC string) in javascript的答案
标签: javascript date