gpt4 book ai didi

javascript - 没有正确倒计时

转载 作者:行者123 更新时间:2023-11-30 06:10:37 26 4
gpt4 key购买 nike

我正在创建一个倒计时网站。我希望它从我的庆祝日期的当前时间开始倒计时 2019-11-29 00:00:00 .我希望时区在澳大利亚布里斯类时区。但是,它似乎一直在计算离我的庆祝日期还剩多少时间是错误的。有人可以告诉我我做错了什么吗?一旦时间达到 0,我怎样才能摆脱倒计时并将其替换为 <a href="party.html">Its celebration time</a>

function dateDiff(a, b) {
// Some utility functions:
const getSecs = dt => (dt.getHours() * 24 + dt.getMinutes()) * 60 + dt.getSeconds();
const getMonths = dt => dt.getFullYear() * 12 + dt.getMonth();

// 0. Convert to new date objects to avoid side effects
a = new Date(a);
b = new Date(b);
if (a > b) [a, b] = [b, a]; // Swap into order

// 1. Get difference in number of seconds during the day:
let diff = getSecs(b) - getSecs(a);
if (diff < 0) {
b.setDate(b.getDate()-1); // go back one day
diff += 24*60*60; // compensate with the equivalent of one day
}
// 2. Get difference in number of days of the month
let days = b.getDate() - a.getDate();
if (days < 0) {
b.setDate(0); // go back to (last day of) previous month
days += b.getDate(); // compensate with the equivalent of one month
}
// 3. Get difference in number of months
const months = getMonths(b) - getMonths(a);
return {
years: Math.floor(months/12),
months: months % 12,
days,
hours: Math.floor(diff/3600),
minutes: Math.floor(diff/60) % 24,
seconds: diff % 60
};
}

// Date to start on
var celebrationDate = new Date("2019-11-29 00:00:00").toLocaleString("en-US", {timeZone: "Australia/Brisbane"});

// Update the count every 1 second
!function refresh () {
const diff = dateDiff(new Date().toLocaleString("en-US", {timeZone: "Australia/Brisbane"}), celebrationDate);
document.getElementById("day-val").innerHTML = diff[Object.keys(diff)[2]];
document.getElementById("hour-val").innerHTML = diff[Object.keys(diff)[3]];
document.getElementById("min-val").innerHTML = diff[Object.keys(diff)[4]];
document.getElementById("sec-val").innerHTML = diff[Object.keys(diff)[5]];
setTimeout(refresh, 1000)
}()
<div id="day-val"></div><div>Days</div><br>
<div id="hour-val"></div><div>Hours</div><br>
<div id="min-val"></div><div>Minutes</div><br>
<div id="sec-val"></div><div>Seconds</div>

最佳答案

如果您正在使用 moment.js

您可以使用 diffduration 函数,如下所示:

const now = moment();
const celebrationDate= moment("2019-11-30 00:00:00");

// this will get the difference between now and celebrationDate
const celebrationDateDiff = expiration.diff(now);

// convert it into duration
const duration = moment.duration(celebrationDateDiff);

然后您可以像这样访问倒计时:

duration.days() // will return the number of days
duration.hours() // will return the number of remaining hours
duration.minutes() // will return the number of remaining minutes

关于javascript - 没有正确倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59083499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com