关于new Date()以及时区的问题

最近发现一个小知识点:

在使用<input type=’date’ id=’time_begin’>的时候,因为是日期型,所以是没有时分秒的。这时候,如果在Javascript里面将该值使用new Date(string)转换为Date类型,会根据你当前所在的时区自动加上时间。如以下代码:

var strTime = $("#timebegin").val();
var time_begin = strTime =='' ? null : new Date(strTime);
alert(time_begin);

举例说,我在上海,input框里面选择了2016年10月17日,这时候new Date出来的值,如果alert出来看,会发现是 2016-10-17 08:00:00 (GMT +8:00)。

要解决这个问题只要在字符串后面加上” 00:00:00″就可以了。注意日期与时间之间要有空格。这时候就不会自动加上时区的偏移量了。代码如下:

var strTime = $("#timebegin").val() + " 00:00:00";
var time_begin = strTime =='' ? null : new Date(strTime);
alert(time_begin);

作者: Ben

IT、电商、零售、医药行业混迹多年的理想主义者。