zoukankan      html  css  js  c++  java
  • Date对象在苹果手机下兼容问题的解决方法

    Date在不同浏览器中对于传入的时间字符串的格式要求是不一样的。比如在chrome浏览器的控制台中输入以下内容,会得到相应结果:

    Date.parse('2015-11-11 00:00:00')
    //->1447171200000
    Date.parse('2015/11/11 00:00:00')
    //->1447171200000
    new Date('2015-11-11 00:00:00')
    //->Wed Nov 11 2015 00:00:00 GMT+0800 (CST)
    new Date('2015/11/11 00:00:00')
    //->Wed Nov 11 2015 00:00:00 GMT+0800 (CST)

    可以发现,chrome对于'-'和'/'分割日期的形式都是支持的,能够返回正确的毫秒数或者时间格式。

    下面在safari浏览器中输入相同内容,查看对应结果:

    > Date.parse('2015-11-11 00:00:00')
    < NaN = $1
    > Date.parse('2015/11/11 00:00:00')
    < 1447171200000 = $2
    > new Date('2015-11-11 00:00:00')
    < Invalid Date = $3
    > new Date('2015/11/11 00:00:00')
    < Wed Nov 11 2015 00:00:00 GMT+0800 (CST) = $4

    可以发现,safari仅对'/'分割日期的形式支持,对'-'分割日期的形式并不支持。

    通过以上实验,我们可以观察出chrome和safari对于不同格式的时间字符串的支持情况。chrome同时支持'-'和'/'分割日期的时间字符串;safari不支持'-'分割日期的时间字符串。

    一个简单有效的解决方法

    下面是一个比较好的解决方案:

    var arr = "2010-03-15 10:30:00".split(/[- / :]/),
        date = new Date(arr[0], arr[1]-1, arr[2], arr[3], arr[4], arr[5]);
      
      console.log(date);
      //-> Mon Mar 15 2010 10:30:00 GMT+0000 (GMT Standard Time)

    该方法为先将时间字符串用split方法进行分割拼装为一个数组,再将每个数组的项作为传参传入new Date()方法,从而将不同形式的字符串转换成有效的时间。 该方法对于所有浏览器生效。

  • 相关阅读:
    ZooKeeper学习第六期---ZooKeeper机制架构
    ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据
    ZooKeeper学习第四期---构建ZooKeeper应用
    ZooKeeper学习第三期---Zookeeper命令操作
    ZooKeeper学习第二期--ZooKeeper安装配置
    ZooKeeper学习第一期---Zookeeper简单介绍
    配置yum,nc,telnet
    Hadoop日记系列目录
    mysql主从复制、读写分离
    分布式事物
  • 原文地址:https://www.cnblogs.com/kugeliu/p/6612562.html
Copyright © 2011-2022 走看看