我正在使用惊人的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吗?
答案 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时间显示日历,而不是本地日历。不知道,该插件在源代码中使用本地日期。