zoukankan      html  css  js  c++  java
  • 【一天一道兼容性】之——IE下new Date()的传参格式

    少叙闲言

    在表单中我们常用到输入日期,有日期就会有格式要求,所以我们会采用插件一类的方法来统一输入格式,例如yyyy-mm-dd、yyyy/mm/dd,这一类的格式在直接以字符串的形式传入Date()来获取时间对象的时候,Chrome和FF都会表现正常,但IE下全系歇菜......

    正题

    demo:

    1 var time_1 = "2012-12-12";
    2 var time_2 = "2012/12/12";
    3 
    4 alert(new Date(time_1))  //Chrome/FF: Thu May 30 2013 09:40:45 GMT+0800 (中国标准时间)  IE678: NaN   IE9: Invalid Date
    5 alert(new Date(time_2))  //Chrome/FF: Thu May 30 2013 09:40:45 GMT+0800 (中国标准时间)  IE678: NaN   IE9: Invalid Date

    解析:

    IE不支持这种格式,而是支持yyyy,mm,dd,注意此处数据类型为数字类型,而且月份要减1

    解决方案:

     1 var time_1 = "2012-12-12";
     2 var time_2 = "2012/12/12";
     3 function fixDate(time) {
     4     if (!document.all) {
     5         return new Date(time);
     6     }
     7     var arr = time.split(time.match(/\D+/g)[0]);
     8     return new Date(arr[0], arr[1] - 1, arr[2]);
     9 }
    10 alert(fixDate(time_1))
    11 alert(fixDate(time_2))

    汇总一下new Date的一些传参格式:

    month:用英文 表示月份名称,从January到December
    mth:用整数表示月份,从0(1月)到11(12月)
    dd:表示一个 月中的第几天,从1到31
    yyyy:四位数表示的年份
    hh:小时数,从0(午夜)到23(晚11点)
    mm: 分钟数,从0到59的整数
    ss:秒数,从0到59的整数
    ms:毫秒数,为大于等于0的整数

    new Date("January 12,2006 22:19:35");

    new Date("January 12,2006");

    new Date(2006,0,12,22,19,35);

    new Date(2006,0,12);

    new Date(1137075575000);

    上面的各种创建形式都表示2006年1月12日这一天。

  • 相关阅读:
    沟通是项目管理知识体系中的九大知识领域之一
    项目管理的三要素时间、成本、质量
    项目管理提升效率的几大关键点
    收到FRDMKL02Z
    【转】arm 开发工具比较(ADS vs RealviewMDK vs RVDS)
    你不能自己把自己放弃写在毕业季
    【转】为什么你应该(从现在开始就)写博客
    Vivado 2014.4 FFT IP 使用及仿真
    项目需求的一些事
    娇荣电子工作室成立了
  • 原文地址:https://www.cnblogs.com/ccto/p/3107563.html
Copyright © 2011-2022 走看看