gpt4 book ai didi

javascript - 使用 UTC 以小时、分钟、秒为单位获取 Javascript 中的 2 个日期之间的差异

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:56:26 26 4
gpt4 key购买 nike

如标题所说,我需要获取两个日期之间的差异,并显示倒计时到完成日期的小时、分钟、秒。我有这个:

function timer(){

'use strict'

var date1 = new Date().getTime();
var date2 = new Date("05/29/2017").getTime();

var diff = date2 - date1;

var seconds = diff / 1000;
var minutes = (diff / 1000) / 60;
var hours = minutes / 60;

var message = 'Hours: ' + Math.floor(hours) + " Minutes: " + Math.floor(minutes) + " Seconds: " + Math.floor(seconds);

var output = document.getElementById('output');
if (output.textContent !== undefined) {
output.textContent = message;
} else {
output.innerText = message;
}
}
setInterval("timer()", 1000);
window.onload = timer;
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>hi</title>
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link rel="stylesheet" href="css/form.css">
</head>
<body>
<!-- auction.html -->
<form action="#" method="post" id="theForm">
<fieldset><legend>Auction ends on May 29, 2017</legend>
<p>Refresh page for updated times.</p>
<div id="output"></div>
<input type="submit" value="Refresh" id="submit">
</fieldset>
</form>
<script src="js/auction.js"></script>
</body>
</html>

我的作业说明指出我需要:“选择一个 future 的结束日期(作业到期后几周)并使用 UTC。显示拍卖结束前剩余的小时、分钟和秒数。”我有点迷失了如何实现 UTC 并创建适当的倒计时?我什至不确定我是否做对了(我才刚刚开始学习 j.s)。我应该如何修复我的代码?

最佳答案

在你的代码中你有:

var date1 = new Date().getTime();

在这种情况下不需要使用 getTime。但是使用有意义的变量名是有帮助的:

var now = new Date();

然后是:

var date2 = new Date("05/29/2017").getTime();

不要使用 Date 构造函数(或 Date.parse)来解析字符串,因为它主要依赖于实现且不一致。如果您有特定日期,请将值直接传递给构造函数。

关于“使用 UTC”,这有点令人困惑,因为 ECMAScript 日期对象是 UTC。它们使用主机时区偏移来计算内部 UTC 时间值,并显示“本地”日期和时间值。我可以解释“使用 UTC”的唯一方法是使用 Date.UTC 创建日期实例,例如:

var endDate = new Date(Date.UTC(2017,4,29)); // 2017-05-29T00:00:00Z

现在您可以了解当时和现在使用的区别:

var diff = endDate - now; 

在尝试获取小时、分钟和秒时:

var seconds = diff / 1000;
var minutes = (diff / 1000) / 60;
var hours = minutes / 60;

这会将整个差异转换为小时、分钟和秒中的每一个,因此总时间约为应有时间的 3 倍。您需要的只是组件,因此:

var hours = Math.floor(diff / 3.6e5);
var minutes = Math.floor(diff % 3.6e5) / 6e4);
var seconds = Math.floor(diff % 6e4) / 1000;

将它们放在一个函数中:

function timeLeft() {
var now = new Date();
var endDate = new Date(Date.UTC(2017,4,29)); // 2017-05-29T00:00:00Z
var diff = endDate - now;

var hours = Math.floor(diff / 3.6e6);
var minutes = Math.floor((diff % 3.6e6) / 6e4);
var seconds = Math.floor((diff % 6e4) / 1000);
console.log('Time remaining to ' + endDate.toISOString() +
' or\n' + endDate.toString() + ' local is\n' +
hours + ' hours, ' + minutes + ' minutes and ' +
seconds + ' seconds');
}

timeLeft()

这里有很多很多关于计时器和日期差异的问题和答案,做一些搜索。

关于javascript - 使用 UTC 以小时、分钟、秒为单位获取 Javascript 中的 2 个日期之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42454564/

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