移动端web开发安卓和ios客户端在时间转换上的差别性问题

    做为一名移动前端开发的人员,平时遇到的兼容性问题不在少数。那么,今天就来讲一下最近遇到的一个小坑(关于Android和ios在时间转换上的差别性问题)话很少说,直接上重点。html

    最近接到了一个需求,很简单,是关于制做一个产品管理系统排序功能,因为后端接口负责提供数据时,数据插入日期不是常见的毫秒数,而是形如"2017-08-01"的一串字符串,当我须要转换成毫秒数用做其余用途的时候,悲剧就发生了,详情以下:前端

    Android客户端:ios

        当使用new Date('2017-08-01 16:10:02').getTime();后端

转换毫秒数的时候,一切正常,获得目标数据。浏览器

    ios客户端:测试

        当使用new Date('2017-08-01 16:10:02').getTime();htm

转换毫秒数的时候,便报错,信息为"Invalid Date"。排序

    该问题从表面上看,是Chrome浏览器和Safari对同一JavaScript代码片断解析不一样形成,那么究竟该如何处理呢?接口

    通过多方探究(ps:进了百度搜谷歌,上了谷歌换了各类关键词搜索),最终找到了一篇梦想中的技术博客,通过一番整理,解决方案以下。ip

    缘由分析:因为Safari浏览器中对"2017-08-01"的解析不正确形成上述缘由,可是Safari浏览器能够完美解析"2017/08/01"格式的字符串,而通过测试,Chrome浏览器中对这两种格式("2017-08-01"与"2017/08/01")的字符串均能完美解析,因此将代码改为以下:

   new Date('2017-08-01 16:10:02').replace(/\-/g,'/').getTime();

完美的解决了上述问题

    由该问题延伸一个小细节,通常会被忽视。

    new Date('2017-08-01').getTime();

    new Date('2017/08/01').getTime();

    上面这两个时间转换结果是相同的吗?相信不少人回答是,然鹅,现实肿是残酷的......本身打开控制台瞅瞅吧,相信这是你接下来的表情....

                                                                                                  大饼哥

相关文章
相关标签/搜索