1

ハードコーディングされた正確な日付を指定する静的ページがあります。使用に JavaScript がある場合は、このハードコードされた正確な日付を「時間前」に変換したいと考えています。

例えば:

3 hours ago

私の質問は、javascript が最も効率的に前の時刻に変換できる日付の形式は何ですか?

  • 10/10/13
  • 10.10.13
  • 2013 年 10 月 10 日
  • 101013
4

3 に答える 3

2

私はこの投稿を見ます: https://stackoverflow.com/a/3177838/2895307

その中で、彼は "timeSince()" 関数のパラメータとして javascript Date() を使用しているだけです。ハードコードされた文字列から JavaScript の日付を作成するには、次の形式を使用できます。

var d1 = new Date("1975 年 10 月 13 日 11:13:00")

于 2013-10-18T15:15:01.373 に答える
1

間違いなく、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

これがお役に立てば幸いです、乾杯!

于 2013-10-22T05:47:45.727 に答える
0

最も簡単なのは、 を使用することDate.getTime()です。

これにより、Unix エポックからのミリ秒数が得られ、計算が非常に簡単になります。

Date.getTime

于 2013-10-18T15:11:58.293 に答える