javascript的Date时差

当有日期字符串形如:

var dt = "2015-03-16T23:59:59";//注意其中有个T,这是什么表示法?不清楚,可能是GMT标准时

然后转换成日期对象,系统会自动加上时差。

var value = "2015-03-16T15:03:00";
var dt;
if (value instanceof Date) {
    dt = value;
} else {
    dt = new Date(value);
}
alert(dt);

结果显示 dt 为:

Mon Mar 16 2015 23:03:00 GMT+0800 (中国标准时间)

已经不再是15时,而是自动加上了8小时,变成23时。(中国时区与格林威治时间相差8小时)。


在实际应用中,有时候会造成误解。比如一个时间从数据库中拿出来在前端显示,小时数可能大于16时,那么加上时区后,就会变成了第二天!

这个时候要考虑时区的因素。要么保存到数据库时,换成标准时;要么显示时,消除时区的影响。

dt.setHours(dt.getHours() + dt.getTimezoneOffset() / 60);//消除时差影响


如果字符串是“2015-03-16 15:03:00”这种形式,则不受时差影响。


另外,new Date(value)这种写法IE似乎不支持。无论从哪方面看,IE都像一个怪物。

版权声明:本文为博主原屙文章,喜欢你就担走。

原文地址:https://www.cnblogs.com/leftfist/p/4764256.html