mongoose时间自动转化为格林尼治标准时间的解决方案

坑点描述

本地时间

Fri Sep 01 2017 00:00:00 GMT+0800 (China Standard Time)

上传到mongoose数据库

ISODate(“2017-08-31T16:00:00.000+0000”)

这是一个隐藏的坑点,上传到mongoose的时间类型数据会自动被转化为格林尼治时间(零时区时间)。

而我们当前的时区为东八区,换算成零时区时间需将我们的时间减去八个小时

网上看了下大多数的解决方案是将上传之前本地时间减去八小时,数据库中读取数据时就可以直接取到正确的时间,然而这么做这么做又引入了一个新的BUG,若当前时区不是东八区,这种操作会返回一个错误的时间,因为世界各地转化为格林尼治标准时间的时差不同。

终极解决方案

在从数据库读取到时间以后,使用new Date(time)方法可以自动转化为当前时区时间。

console.log($scope.currentType.updated);    //2017-08-30T04:10:04.713Z
console.log(new Date($scope.currentType.updated));  //Wed Aug 30 2017 12:10:04 GMT+0800 (China Standard Time)

END

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值