「秒前」をカウントするJavaScriptカウンターを作成しています。私は JS 時間オブジェクトに自分の時間を持っています。ここでスタック オーバーフローに関する「時間差」関数のスニペットを見つけましたが、「2 時間前」と表示されます。「5時間10分37秒前」と表示するにはどうすればいいですか?
これが私が取り組んでいるものです:
この関数は、現在時刻と何かのタイムスタンプを暗号化された日付ではなく「20 秒前」に変換します。
function timeDifference(current, previous) {
var msPerMinute = 60 * 1000;
var msPerHour = msPerMinute * 60;
var msPerDay = msPerHour * 24;
var msPerMonth = msPerDay * 30;
var msPerYear = msPerDay * 365;
var elapsed = current - previous;
if (elapsed < msPerMinute) {
return Math.round(elapsed/1000) + ' seconds ago';
} else if (elapsed < msPerHour) {
return Math.round(elapsed/msPerMinute) + ' minutes ago';
} else if (elapsed < msPerDay ) {
return Math.round(elapsed/msPerHour ) + ' hours ago';
} else if (elapsed < msPerMonth) {
return 'approximately ' + Math.round(elapsed/msPerDay) + ' days ago';
} else if (elapsed < msPerYear) {
return 'approximately ' + Math.round(elapsed/msPerMonth) + ' months ago';
} else {
return 'approximately ' + Math.round(elapsed/msPerYear ) + ' years ago';
}
}
そして、これが私が毎秒時間を「カウントアップ」するために使用しているものです。「5 時間 3 分 10 秒前」と言って、1 秒後に「5 時間 3 分 11 秒前」と言ってほしい
var newTime = new Date(data.popular[i].timestamp*1000)
var relTime = timeDifference(new Date(),newTime)
setInterval(function(){
var theTimeEl = $('.timestamp-large').filter(function(){
return $(this).html() == relTime
});
newTime.setSeconds(newTime.getSeconds() + 1);
var relTime = timeDifference(new Date(), newTime);
$(theTimeEl).html(relTime);
console.log(relTime)
}, 1000)
変数 newTime は、UTC JavaScript 日付形式の時刻です。relTime は「秒前」形式です。間隔は一連のタイムスタンプ要素をループし、タイムスタンプごとに正しい要素を選択します。次に、時間に 1 秒を追加し、それを「ファジー時間」(秒前) に変換し、html を新しい時間に置き換えて、コンソールに記録します。
「5 時間前」を「5 時間 37 分 10 秒前」に変更するにはどうすればよいですか? 時差機能を修正する必要があります。