为什么新的Date.toDateString()会返回UTC日期?

时间:2014-06-04 20:34:42

标签: javascript twitter-bootstrap

我正在使用惊人的bootstrap calendar插件,我注意到它将当前日期视为UTC日期,而不是本地日期。我一直认为javascript日期是本地的,所以会导致新的Date())。toDateString()为UTC日期?感谢

if(date.toDateString() == (new Date()).toDateString()) {
        console.log(date.toDateString());
        console.log(date.toString());
        console.log(new Date().toDateString());
        addClass("today", classes);
}

如果我添加日志记录,我会得到这个,但它仍然显示为第5个

2014年6月4日星期三

2014年6月4日星期三17:00:00 GMT-0700(太平洋标准时间)

2014年6月4日星期三

是否有可能另一个库覆盖默认的toString()\ toDateString()。我在页面上包含了moment.js和date.js吗?

1 个答案:

答案 0 :(得分:3)

  

我一直认为javascript Date是本地的

没有。 JavaScript日期与时区无关。只有它的方法必须做关于时区的转换关注,例如toUTCString()产生UTC,toString()产生一个依赖于用户区域 - 时区的表示;同样getUTCHours()getHours()

  

那么什么会导致(new Date()).toDateString()成为UTC日期?

我希望没有。 toDateString返回当前当前时区的日期。如果那是产生UTC值,则a)你是UTC + 0或b)它被调用的日期对象首先表示错误的时间戳。

  

是否有可能另一个库覆盖默认的toString()\ toDateString()。

是的,但是你必须永远不要覆盖内置方法(除非它们确实是错误的并且你想要使用符合规范的polyfill)。

  

我的问题是为什么引导日历插件将“今天”类添加到第5版和第4版。

可能是因为它在UTC时间显示日历,而不是本地日历。不知道,该插件在源代码中使用本地日期。