1

我试图使用 javascript 对象文字来格式化时间,以便与 MySql 日期时间值进行比较。

继承人的对象。

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 回答