mongodb对于时间的存储问题

如果是时间类型的数据入库,将会有以下操作。同时,在数据读取的时间仍然需要对其进行转换操作。除了知道时间是时间类型作统一,貌似没有其他方便之处。
    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的,无论取出的是什么类型的字段都是需要转换的



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值