1

私の問題は単純ですが、解決するのはとても難しいです。基本的に、new Date().getTime()メソッドから受け取った数値をデータベースに保存し、その文字列を以前の関数で使用しています。DD-MM-YYYY ; h:m:s関数は非常にうまく機能しますが、文字列をフォーマットに変換する方法がわかりません

私の昔の機能:

<script>
$(document).ready(function() {
var db_time = //the string from the database;
var c_db_time = db_time/1000;//remove the milli seconds
function ago()
{
    var current_time = new Date().getTime()/1000;//remove the milli seconds
    var dif = Math.round(current_time - c_db_time);
    if(dif<60)//one minute ago
    {
        if(dif<=10){$(".elapsed_time").html("just now");}
        else{var ago = dif;$(".elapsed_time").html(ago+"sec ago");}
    }

    else if(dif<3600)//one hour ago
    {
        var ago = Math.round(dif/60);
        $(".elapsed_time").html(ago+"min ago")
    }
    else if(dif<86400)//one day ie.24hours ago
    {
        var ago = Math.round(dif/3600);
        $(".elapsed_time").html(ago+"hr ago");
    }
    else if(dif<604800)// one week ago
    {
        var ago = Math.round(dif/86400);
        $(".elapsed_time").html(ago+"Day ago");
    }

}
setInterval(ago,1000);//run the script every 1 sec
});
</script>

注: Google とスタック オーバーフローのあらゆる場所を調査しましたが、自分に合った答えが見つかりませんでした。

4

3 に答える 3

3

Moment.jsは、このようなことを行うための優れたライブラリです。

moment(theDate).format('dd-mm-yyyy ; h:m:s');

また、文字列から日付を取得することもサポートしています。

moment('01-01-2001', 'dd-mm-yyyy');

Moment には、手動で行っている相対時間ステートメントの非常に堅牢な処理もあります。

moment(theDate).fromNow(); // 11 hours ago, in 3 days, etc.

Javascript でネイティブの日付オブジェクトを操作するのは面倒です。日付の計算は一般的に難しいです。瞬間はすべての困難な作業をまとめ、あなたが望むものを説明することができます.

于 2014-05-01T14:40:12.640 に答える
1

タイムスタンプ値から Date インスタンスを構築し、さまざまなアクセサ メソッド ( 、 など) を使用.getDate()して.getMonth().getFullYear()必要に応じて日付をフォーマットできます。

たとえば、次のようになります。

var savedDate = new Date(db_time);

Date インスタンスを作成します。次に、ゼロで始まる 2 桁の数字を生成する関数があると便利です。

function d2( n ) {
  return (n < 10 ? "0" : "") + n;
}

次に、DD-MM-YYYY 日付を作成できます。

var ddmmyy = d2(savedDate.getDate()) + "-" + d2(savedDate.getMonth() + 1) + "-" + savedDate.getFullYear();

(Date インスタンスの月の値は 0 から 11 で実行されるため、1 を加算する必要があります。)

于 2014-05-01T14:34:24.573 に答える
1

JavaScript の Date オブジェクトには toString() メソッドがあり、その日付の文字列表現を返します。ただし、その文字列の書式設定に満足できない場合、文字列に使用する特定の書式を指定する方法はありません。日付の一部を取り出して、自分で文字列を作成する必要があります。

于 2014-05-01T14:34:50.353 に答える