8

PostgreSQL データベースでは、タイムスタンプ列にこの値を保存しました: 2013-03-15 08:50:00。私の目標は、データベースからこの日付を取得し、現在の時刻がデータベースからの時刻よりも約 12 時間短いかどうかを確認することです。

この目的のために、データベースから現在の時刻を取得し、それをデータベースの日付と比較したかったのですnew Date()が、時刻形式が異なるため、これは機能しません。

どうすればそれを行い、それらの時間を同じ (同等の) 形式に変換できますか?

4

1 に答える 1

6

var ds='2013-03-15 08:50:00';

タイムゾーンの情報がなければ、今日が何日かはわかりません。文字列が UTC であると仮定すると、スペースを「T」に置き換えて最後に「Z」を追加すると、Date コンストラクターを使用できます。

var ds='2013-03-15 08:50:00';

var day=new Date(ds.replace(' ','T')+'Z');

day.toUTCString()

2013 年 3 月 15 日金曜日 08:50:00 GMT

ISO または SQL 形式を解析する日付解析関数を作成できます。

これは一部の古いブラウザで必要になる場合があります。

Date.fromISO= function(s){
    var day, tz,
    rx=/^(\d{4}\-\d\d\-\d\d([tT ][\d:\.]*)?)([zZ]|([+\-])(\d\d):(\d\d))?$/,
    p= rx.exec(s) || [];
    if(p[1]){
        day= p[1].split(/\D/);
        for(var i= 0, L= day.length;i<L;i++){
            day[i]= parseInt(day[i], 10) || 0;
        };
        day[1]-= 1;
        day= new Date(Date.UTC.apply(Date, day));
        if(!day.getDate()) return NaN;
            //adjust for time zone offset:
        if(p[5]){
            tz= (parseInt(p[5], 10)*60);
            if(p[6]) tz+= parseInt(p[6], 10);
            if(p[4]== '+') tz*= -1;
            if(tz) day.setUTCMinutes(day.getUTCMinutes()+ tz);
        }
        return day;
    }
    return NaN;
}

次に Date.fromISO('2013-03-15 08:50:00')を呼び出します。

于 2013-03-13T21:31:18.920 に答える