ハードコーディングされた正確な日付を指定する静的ページがあります。使用に JavaScript がある場合は、このハードコードされた正確な日付を「時間前」に変換したいと考えています。
例えば:
3 hours ago
私の質問は、javascript が最も効率的に前の時刻に変換できる日付の形式は何ですか?
- 10/10/13
- 10.10.13
- 2013 年 10 月 10 日
- 101013
ハードコーディングされた正確な日付を指定する静的ページがあります。使用に JavaScript がある場合は、このハードコードされた正確な日付を「時間前」に変換したいと考えています。
例えば:
3 hours ago
私の質問は、javascript が最も効率的に前の時刻に変換できる日付の形式は何ですか?
私はこの投稿を見ます: https://stackoverflow.com/a/3177838/2895307
その中で、彼は "timeSince()" 関数のパラメータとして javascript Date() を使用しているだけです。ハードコードされた文字列から JavaScript の日付を作成するには、次の形式を使用できます。
var d1 = new Date("1975 年 10 月 13 日 11:13:00")
間違いなく、UNIX タイムスタンプはすべての日付と時刻の計算に最適な形式です。後で結果をより読みやすい形式に変換できます。
計算は簡単です。たとえば、過去のイベントのタイムスタンプから始めます。
var anHourAgo = Date.now() - 3600000;
次に、現在のタイムスタンプからそれを引き、そのイベントから経過したミリ秒数を取得します
Date.now() - anHourAgo
次に、それらのミリ秒を時間、分、秒に変換する任意の関数に渡すことができます。これは、秒を取り、その情報を含む配列を返す例と、それらの数値をゼロで埋める別の関数です。
var zeroPad = function(n){
return n.toString().replace(/^(\d)$/,'0$1');
};
var formatSecs = function(s){
var r = [
Math.floor(s / 3600),
Math.floor(s%3600 / 60),
Math.floor((s%3600)%60)
];
r.push(zeroPad(r[0])+':'+zeroPad(r[1])+':'+zeroPad(r[2]));
return r;
};
formatSecs 関数はミリ秒ではなく秒を想定しています。1000 で割り、その数値を四捨五入してから、その数値を関数に渡す必要があります。
Math.round(Date.now() - anHourAgo) / 1000
最後に、すべてのコードが動作している実際の例を次に示します。
http://codepen.io/DavidVValdez/pen/axHGj
これがお役に立てば幸いです、乾杯!