gpt4 book ai didi

javascript - 每小时倒数计时器,但以 30 分钟标记

转载 作者:行者123 更新时间:2023-12-02 14:39:05 26 4
gpt4 key购买 nike

我需要一个简单的倒数计时器,但由于某种原因我似乎无法得到它,这真的很困扰我,我认为这是因为我需要它的特殊方式,它必须遵守这些规则:

  • 必须每小时
  • 必须在 30 分钟内
  • 必须使用 UTC 时间

例如,现在是 07:22 UTC,距离下一个时间还有 8 分钟。
如果说 07:30,那么距离下一个时间还有 1 小时。
最后但并非最不重要的一点是,如果是 07:31,它会显示距下一个时间还有 59 分钟。

对于我所做的其他倒计时,我能够很容易地做到这一点,但那些是针对小时类型的事情,它并没有那么复杂......我只是很难过,请帮助我。

编辑添加了示例代码

        var d = new Date();
var hoursUntil = 2 - d.getUTCHours() % 3;
var minutesUntil = 60 - d.getUTCMinutes();

var timestr = "";

if (minutesUntil === 60) {
hoursUntil++;
minutesUntil = 0;
}

if (hoursUntil > 0) {
timestr += hoursUntil + " hour" + (hoursUntil > 1 ? "s" : "");
}

if (hoursUntil >= 1 && minutesUntil > 1) {
timestr += " and " + minutesUntil + " minute" + (minutesUntil > 1 ? "s" : "");
}

if (minutesUntil > 1 && hoursUntil < 1) {
timestr += minutesUntil + " minute" + (minutesUntil > 0 && minutesUntil < 2 ? "" : "s");
}

bot.sendMessage(msg, "Next event will be in " + timestr + ".");

最佳答案

让我们思考一下。我们想知道的是,下一次分针显示 30 时。如果我们只想每半小时知道一次,我们可以将其余部分除以 30,就像使用 d.getUTCHours() % 3 所做的那样.

但是,我们希望每 60 分钟获取一次,因此我们必须执行 somethingInMinutes % 60。标记必须在从 60 到 0 的类次上,所以只需添加 30 分钟。

要获得秒精度,请将其计算为秒,加上当前秒数,然后从 60 分钟(3600 秒)中减去两者。

我们想要一个在每第二个轮类时触发的计时器。计算 1000 和毫秒的差异。

<div>Seconds remaining until next 30 minutes mark: <span id="min-total"></span></div>
<div>minutes:seconds remaining: <span id="min-part"></span>:<span id="sec-part"></span></div>

<script>
var byId = document.getElementById.bind(document);

function updateTime()
{
var
time = new Date(),
// take 1800 seconds (30 minutes) and substract the remaining minutes and seconds
// 30 minutes mark is rest of (+30 divided by 60); *60 in seconds; substract both, mins & secs
secsRemaining = 3600 - (time.getUTCMinutes()+30)%60 * 60 - time.getUTCSeconds(),
// integer division
mins = Math.floor(secsRemaining / 60),
secs = secsRemaining % 60
;
byId('min-total').textContent = secsRemaining;
byId('min-part').textContent = mins;
byId('sec-part').textContent = secs;

// let's be sophisticated and get a fresh time object
// to calculate the next seconds shift of the clock
setTimeout( updateTime, 1000 - (new Date()).getUTCMilliseconds() );
}
updateTime();
</script>

关于javascript - 每小时倒数计时器,但以 30 分钟标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179899/

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