Javascript倒计时中的日期

Javascript倒计时中的日期,javascript,Javascript,我正在为网站倒计时。我有如下简单的javascript代码。代码中的最后一行给出了输出5,它应该给出输出零,因为我并没有给它分配任何小时值。结果,我的倒计时延迟了5个小时,而我希望它停止的确切时间 var date1 = new Date("2019-12-09"); document.write(date1.getHours()); 您可以使用getTimezoneOffset()然后将其减去: var date1 = new Date("2019-12-09"); console.log(

我正在为网站倒计时。我有如下简单的javascript代码。代码中的最后一行给出了输出5,它应该给出输出零,因为我并没有给它分配任何小时值。结果,我的倒计时延迟了5个小时,而我希望它停止的确切时间

var date1 = new Date("2019-12-09");
document.write(date1.getHours());

您可以使用
getTimezoneOffset()
然后将其减去:

var date1 = new Date("2019-12-09");
console.log(date1.getHours() + date1.getTimezoneOffset() / 60);

这里的问题是,当您创建
日期而不指定时区时,它会将其视为小时/分钟/秒设置为零,然后整个日期转换为您的本地时区(具体为浏览器的时区)。这取决于你在世界上的位置,可能会偏离目标很多小时。因此,每次需要比较两个日期(countown或任何其他日期)时,必须使用UTC方法或确保明确指定两个日期的时区:

const timeZero = new Date('01 Jan 1970 00:00:00 GMT')    // <<- explicit GMT timezone
const isoTimeZero = new Date('1970-01-01T00:00:00.000Z') // ISO format of the same
...

const today = new Date();
const utcDateStr = `${today.getUTCFullYear()}-${today.getUTCMonth()+1}-${today.getUTCDate()} 00:00:00.000 GMT`
const utcDate = new Date(utcDateStr)

const offsetInMillisec = utcDate - timeZero   // You can calculate hours/munites left to zero as needed

const timeZero=new Date('1970年1月1日00:00:00 GMT')//我觉得您遗漏了一些重要的上下文……因为默认情况下,如果您自己不提供时间,它会将其设置为UTC午夜。您可能处于GMT+5时区。您可以使用UTC方法,例如,我可以简单地从中减去5小时以获得正确的时间吗?如果您有不同时区的用户,则仅减去5小时是不够的Document.write(date1.getTimezoneOffset());将输出设置为-330,表示偏移量。所以,为了得到正确的答案,我需要加上偏移量。我会调整答案的。