zoukankan      html  css  js  c++  java
  • 移动端web开发安卓和ios客户端在时间转换上的差异性问题

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

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

        Android客户端:

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

    转换毫秒数的时候,一切正常,得到目标数据。

        ios客户端:

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

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

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

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

        原因分析:由于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();

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

                                                                                                      大饼哥

  • 相关阅读:
    【Python】使用codecs模块进行文件操作及消除文件中的BOM
    Vue公共结果页面实现
    vscode调整字体大小
    vue-cli3使用vue-svg-loader加载svg
    Microsoft Edge Chrome 下载
    [译]基于Vue.js的10个最佳UI框架,用于构建移动应用程序
    axios采坑之路
    MacBook Touch Bar 使用技巧
    vue-cli 3.x 移除console总结
    嵌入式Linux如何设置获取uboot参数
  • 原文地址:https://www.cnblogs.com/Zhangzhiwei-0/p/8490186.html
Copyright © 2011-2022 走看看