代码之家  ›  专栏  ›  技术社区  ›  Steve W

从IE获取英国格式的日期

  •  0
  • Steve W  · 技术社区  · 6 年前

    在HTML文档中,我有一个日期字段:

    <input type="date" id="birthDate" class="date-picker">
    

    我用javascript得到这个日期,就像这样:

    var birthdate = new Date($('#birthDate').val());
    

    做一些总结:

    var today = new Date(Date.now());
    var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
    var bornDays = Math.floor(Math.abs((today.getTime() - birthdate.getTime()) / (oneDay)));
    

    用户在html页面上以dd/mm/yyyy格式输入日期。在chrome中,这个功能很好,并且给了我正确的出生后天数'borndays'。不过,i e似乎将输入的日期解释为美国格式,即mm/dd/yyyy,因此当我将日期输入javascript时,它认为日期是月份,反之亦然。 从IE获取数据时,如何指定日期为英国格式?

    额外澄清:

    如果用户在浏览器中输入日期09/11/2018

    在铬合金中, birthdate.getDate() returns 9

    在IE中,
    birthdate.getDate() returns 11

    3 回复  |  直到 6 年前
        1
  •  0
  •   Lightness Races in Orbit    6 年前

    如果您知道输入的字符串将采用dd-mm-yyyy格式, 解析它 把它的各个部分交给 the Date constructor 而不是希望 日期 构造函数将能够猜测输入格式。

    或者,更好的是,为日/月/年(或日历小部件)提供单独的字段,这样您就不必依赖用户来键入特定格式的字符串。

        2
  •  0
  •   James Howell    6 年前

    你能把数据的每一部分——日、月和年——存储在变量中,然后按照你想要的顺序构造一个字符串吗?这在所有浏览器中都应该有效。

    var currentTime = new Date();
    var gmt = new Date(currentTime.valueOf() + currentTime.getTimezoneOffset() * 60000);
    var day = gmt.getDate();
    var month = gmt.getMonth() + 1;
    var year = gmt.getFullYear();
    
    var dateString = day + '/' + month + '/' + year;
    
        3
  •  0
  •   Anjana Silva    6 年前

    为了避免在不同的浏览器中对日期/时间有不同的解释,建议使用library,例如 MomentJS 是的。

    现在,假设你需要 date 一根绳子断了。

    var day = moment("1995-12-25");
    moment().date(); //will gives you the date
    

    上面给出的答案在所有浏览器中都是一样的。

    Momentjs支持以下功能 browsers ,请

    当前,以下浏览器用于CI系统:Windows XP上的Chrome、Windows 7上的IE 8、9和10、Windows 10上的IE 11、Linux上的最新Firefox和OSX 10.8和10.11上的最新Safari。

    我希望你会觉得这个答案有用。

    干杯。