タイトルにあるように、2 つの日付の差を取得し、終了日までの時間、分、秒を表示する必要があります。私はこれを持っています:
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>
私の課題の指示には、「将来の終了日を選択し (課題の期限から数週間後)、UTC を使用する必要があると記載されています。オークションが終了するまでの時間、分、秒を表示します。」UTC を実装して適切なカウントダウンを作成する方法がわかりません。私がそれを正しく行ったかどうかさえわかりません (私は js を学び始めたばかりです)。コードを修正するにはどうすればよいですか?
あなたのコードには次のものがあります。
var date1 = new Date().getTime();
この場合、getTimeを使用する必要はありません。ただし、意味のある変数名を使用すると便利です。
var now = new Date();
次に、次のとおりです。
var date2 = new Date("05/29/2017").getTime();
Date コンストラクター (または Date.parse) を使用して文字列を解析しないでください。ほとんどの場合、実装に依存し、一貫性がないためです。特定の日付がある場合は、値をコンストラクターに直接渡します。
「use UTC」に関しては、ECMAScript Date オブジェクトは 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;
すべてを 1 つの関数にまとめる:
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()
ここには、タイマーと日付の違いに関する多くの質問と回答があります。検索を行ってください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加