date = new Date();//入库时间
var localTime = date.getTime();
var localOffset=date.getTimezoneOffset()*60000; //获得当地时间偏移的毫秒数
var utc = localTime + localOffset; //utc即GMT时间
var offset =16; //以北京时间为例,东8区
var beijing = utc + (3600000*offset);
date = new Date(beijing);
data.time = date;
var receiveTime = new Date(
parseInt(data.DataTime.substring(0,4)),//年
parseInt(data.DataTime.substring(4,6)) - 1,//月,从零开始,需要减一
parseInt(data.DataTime.substring(6,8)),//日
parseInt(data.DataTime.substring(8,10)),//时
parseInt(data.DataTime.substring(10,12)),//分
parseInt(data.DataTime.substring(12,14))//秒
);
localTime = receiveTime.getTime();
localOffset = receiveTime.getTimezoneOffset() * 60000;
utc = localTime + localOffset;
beijing = utc + (3600000*offset);
data.DataTime = new Date(beijing);
将时区再加8个之后入库就正常了
如果使用string 或者时间戳 将会有以下优势
1.格式统一为熟悉的自己定义的类型,方便读写
2.数据的比较和数据的计算将会简化
3.数据的插入将会简化转换,不会造成时间错误
4.mongodb本身是基于document的,无论取出的是什么类型的字段都是需要转换的