Mongodb时间类型转换

MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中,当我们取出存储的时间时,就会出现时差的问题。比如我们用的北京时间,读取到的数值就会看到比当前时间少了8个小时,难道说我们在每次读取的时候都要单独处理一下时间吗,这就比较麻烦。其实,我们可以在存储的时候进行相应的处理,只需使用getTimezoneOffset()和toISOString()函数。

getTimezoneOffset函数:返回此地区的时差(当地时间与GMT格林威治标准时间的地区时差),单位为分钟。

 
  1. <script>

  2. // 我们是东八区

  3. var d = new Date();

  4. var tz = d.getTimezoneOffset();

  5. console.log(tz); // -480

  6. </script>

  7. 复制代码

toISOString()函数:使用ISO标准将 Date 对象转换为字符串。

该标准称为 ISO-8601 ,格式为: YYYY-MM-DDTHH:mm:ss.sssZ。

封装时间转换函数

 
  1. localDate(v) {

  2. const d = new Date(v || Date.now());

  3. d.setMinutes(d.getMinutes() - d.getTimezoneOffset());

  4. return d.toISOString();

  5. },

  6. 复制代码

我们在存储时间的时候调用localDate()这个函数就可以了,无论你处在哪个时区结果显示都和当地时间一样。

假设时间字段是time
db.coll.updateMany({}, [{$set: {time: {$subtract: ["$time", 8*3600*1000]}}}]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值