当有日期字符串形如:
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都像一个怪物。
版权声明:本文为博主原屙文章,喜欢你就担走。