作为一名移动前端开发的人员,平时遇到的兼容性问题不在少数。那么,今天就来说一下最近遇到的一个小坑(关于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();

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

大饼哥

移动端web开发安卓和ios客户端在时间转换上的差异性问题的更多相关文章

  1. 安卓手机移动端Web开发调试之Chrome远程调试(Remote Debugging)

    一.让安卓打debug模式的apk包 二.将电脑中的chrome升级到最新版本,在chrome浏览器地址栏中输入chrome://inspect/#devices: 在智能手机还未普及时,移动设备的调 ...

  2. 移动端web开发的一些知识点

    整理一下自己平时移动端web开发中遇到的问题,也参考一下前辈的一些总结 1.最常见的要数1像素边框了 因为Retine屏的分辨率始终是普通屏幕的2倍,1px的边框在dpr=2的retina屏下会显示成 ...

  3. 移动端web开发技巧(转)

    原文链接:http://liujinkai.com/2015/06/06/mobile-web-skill/ 移动端web开发技巧 这是一个最好的时代,因为我们站在潮流中:但也是一个最坏的时代,因为我 ...

  4. 移动端 Web 开发前端知识整理

    文章来源: http://www.restran.net/2015/05/14/mobile-web-front-end-collections/ 最近整理的移动端 Web 开发前端知识,不定期更新. ...

  5. 【前端】移动端Web开发学习笔记【2】 & flex布局

    上一篇:移动端Web开发学习笔记[1] meta标签 width设置的是layout viewport 的宽度 initial-scale=1.0 自带 width=device-width 最佳实践 ...

  6. 移动端Web开发注意点

    不用考虑浏览器兼容性 移动端开发主要对象是手持设备,其中绝大部分是IOS和Android系统,so,在开发此类页面时不必纠结IE和其他一些2B浏览器的兼容性,webkit是本次开发重点. 当然,不同版 ...

  7. 【前端】移动端Web开发学习笔记【1】

    下一篇:移动端Web开发学习笔记[2] Part 1: 两篇重要的博客 有两篇翻译过来的博客值得一看: 两个viewport的故事(第一部分) 两个viewport的故事(第二部分) 这两篇博客探讨了 ...

  8. 移动端web开发基础概念

    最近在了解移动端web开发的相关知识,有些概念总是模糊不清,这次花费了一些时间整体的梳理了一遍. 分辨率 分辨率可以从显示分辨率与图像分辨率两个方向来分类.显示分辨率(屏幕分辨率)是屏幕图像的精密度, ...

  9. 移动端Web开发如何处理横竖屏

    <!Doctype html> <html> <head> <meta charset="utf-8"> <meta id=& ...

随机推荐

  1. Linux 虚拟机忘记root密码

    Linux 虚拟机忘记root密码可以按照下面的步骤重新设置密码: 1.在grub界面,也就是有press any key的那个界面,按下任意键 2.键入e,出现三行文字,按上下键选择kernel那一 ...

  2. JDBC(一)

    JDBC(Java DataBase Conectivity)Java数据库连接,是J2SE的一部分,由java.sql和javax.sql组成. package dbTest; import jav ...

  3. HDU 3374 String Problem

    最大最小表示法与KMP求循环节 最大最小表示法 最大最小表示法与KMP求循环节的模板题, #include <iostream> #include <cstdio> #incl ...

  4. hdu 5730 Shell Necklace [分治fft | 多项式求逆]

    hdu 5730 Shell Necklace 题意:求递推式\(f_n = \sum_{i=1}^n a_i f_{n-i}\),模313 多么优秀的模板题 可以用分治fft,也可以多项式求逆 分治 ...

  5. [测试]java IO写入文件效率——几种方法比较

    各类写入方法 /** *1 按字节写入 FileOutputStream * * @param count 写入循环次数 * @param str 写入字符串 */ public void outpu ...

  6. Flink入门使用

    完全参考:Flink1.3QuickStart 启动本地运行 首先找一台安装了hadoop的linux. 将安装包解压,到bin目录启动local模式的脚本. tar -zxvf flink-1.3. ...

  7. openwrt pptpd客户端

    步骤 opkg update opkg install ppp-mod-pptp opkg install luci-proto-ppp 在OpenWRT安裝PPTP Client端 首先用ssh登陆 ...

  8. maven The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path错误

    对于这个问题的话,请在pom文件中加入 <dependency> <groupId>javax.servlet</groupId> <artifactId&g ...

  9. SQL注入漏洞产生的原因是什么?怎么防止?XSS呢?

    SQL注入产生的原因:程序开发过程中不注意规范书写sql语句和对特殊字符进行过滤,导致客户端可以通过全局变量POST和GET提交一些sql语句正常执行. 防止SQL注入: 1.开启配置文件中的magi ...

  10. CentOS下安装配置cmake

    安装环境:CentOS-6.4   安装方式:源码编译安装  软件:cmake-2.8.5.tar.gz 下载地址暂时不提供,去百度搜一下准有 安装前提 系统中已经安装了gcc. ncurses-de ...