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日这一天。

  • 相关阅读:
    上学要迟到了【最短路转化】
    解方程【狄利克雷卷积+莫比乌斯反演+积性函数】
    FFT
    min25 筛
    Easy【生成函数】
    CF1406D-Three Sequences
    Alice和Bob赌糖果【赌徒破产模型】
    记MySQL自增主键修改无效的问题
    JVM学习笔记(十一、JDK分析工具)
    JVM学习笔记(十、GC3-垃圾回收机制)
  • 原文地址:https://www.cnblogs.com/ccto/p/3107563.html
Copyright © 2011-2022 走看看