1

MySqlの日時値と比較するために、javascriptオブジェクトリテラルを使用して時間をフォーマットしようとしています。

対象はこちら。

var dateTime = {
    d: new Date(),
    pad: function(number) {
        return (number < 10 ? '0' : '') + number;
    },
    now: function() {
        return this.d.getFullYear()+'-'+this.pad(this.d.getMonth()+1)+'-'+this.pad(this.d.getDate())+' '+this.pad(this.d.getHours())+':'+this.pad(this.d.getMinutes())+':'+this.pad(this.d.getSeconds());
    }            
}

このオブジェクト onClick を呼び出して日付を取得し、アラート ボックスに表示するとします。同じ文字列が返され続けます。

例:

alert(dateTime.now());

戻り値:

Same date every time.

なぜ?

4

1 に答える 1

3

コードを次のように変更します。

var dateTime = {
    pad: function(number) {
        return (number < 10 ? '0' : '') + number;
    },
    now: function() {
        var d = new Date();
        return d.getFullYear()+'-'+this.pad(d.getMonth()+1)+'-'+this.pad(d.getDate())+' '+this.pad(d.getHours())+':'+this.pad(d.getMinutes())+':'+this.pad(d.getSeconds());
    }            
}

を実行すると、スナップショットのように、実行されd: new Date()た瞬間の日付/時刻を含むオブジェクトを取得しています。new Date()そのオブジェクトは動的時間を表示しません。そのため、常に同じ時間が表示されます。実は、dateTime オブジェクトが作成された時刻です。

于 2013-01-11T15:58:37.437 に答える