小程序开发之兼容IOS踩到的坑

new Date()方法遇到的坑

在开发中,会遇到日期时间的一些展示,而后台数据库存储的数据格式是yyyy/MM/ddTHH:mm:ss.fff+0000格式的,如 2020-03-24T02:19:52.000+0000
,这是国际化标准组织的国际标准ISO 8601 格式表示的时间,中间的大写T表示日期和时间合并表示,+0000表示时间偏移量,因为是0000,因此没用偏移,是UTC时区。而我们所处的是东八区,比UTC时间多八个小时。这是一些背景介绍,那么接下来我就讲述一下我遇到的坑。

UTC时区转东八区时区

我们要实现的功能是将后端发送过来的UTC时间转变为东八区时间,也就是加八个小时。

修改字符串法

一个最简单的思路就是拿到hh加8就完事了,但这涉及到日期的一个进位,如果时间大于下午四点,那么日期就要加一,涉及到日月年都可能要加一,是比较麻烦的,因此这种方法不适合采用。

时间戳加八

js提供的 new Date() 方法,参数可以是一个时间戳字符串,一个表示日期的字符串值。

该字符串能被Date.parse() 正确方法识别(即符合 IETF-compliant RFC 2822 timestamps 或 version of ISO8601)>(具体可参考MDN文档-Date

而我们的数据刚好就是ISO8601格式的字符串,因此我们使用new Date()将其转化为一个Date实例,如果我们直接打印这个实例,那么返回的日期就是

let a = '2020-03-24T02:19:52.000+0000';
let b = new Date(a);
console.log(b); //Tue Mar 24 2020 10:19:52 GMT+0800 (中国标准时间)
conso
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值