代码之家  ›  专栏  ›  技术社区  ›  quma

ie和safari中日期对象的javascript日期对象、getdate()、getmonth()和getfullyear

  •  0
  • quma  · 技术社区  · 6 年前

    我在javascript代码中使用这个函数是为了将datetime对象格式化为字符串,这个函数对firefox和chrome很好,但对ie和safari则不行。 有人知道怎么做才能使这个也与Safari和IE一起工作吗?

    日期对象在chrome中是这样的:2019年3月25日星期一00:00:00 GMT+0100(CET)

    function formatDateTimeToString(date) {
      var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
      var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
      var yyyy = date.getFullYear();
      var hours = (date.getHours() < 10 ? '0' : '') + date.getHours();
      var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
      return (dd + "." + MM + "." + yyyy + ' ' + hours + ':' + minutes);
    }
    
    console.log(formatDateTimeToString(new Date()));
    0 回复  |  直到 6 年前
        1
  •  0
  •   slevy1    6 年前

    如果safari的日期对象的生成方式与chrome相同,那么至少在我的旧版本safari中,代码运行成功,如下所示:

    function formatDateTimeToString(date) {
    var dd = (date.getDate() < 10 ? '0' : '') + date.getDate();
    var MM = ((date.getMonth() + 1) < 10 ? '0' : '') + (date.getMonth() + 1);
    var yyyy = date.getFullYear();
    var hours = (date.getHours() < 10 ? '0' : '') + date.getHours();
    var minutes = (date.getMinutes() < 10 ? '0' : '') + date.getMinutes();
                   return (dd + "." + MM + "." + yyyy + ' ' + hours + ':' + minutes);
                }
    
    var d = document;
    d.w = d.writeln;
    var date = new Date("Mon Mar 25 2019 00:00:00 GMT+0100 (CET)");
    
    /* this works */
    d.w( formatDateTimeToString(date)+"<BR>"); 
    
    // output:
    // 24.03.2019 16:00
    

    如果尝试使用包含连字符的字符串实例化日期对象,则在safari中可能会得到nan,如下所示:

    var d = document;
    d.w = d.writeln;
    
    date = new Date("2019-03-24");
    /* returns NaN */
    d.w( formatDateTimeToString(date)+"<BR>");
    
    date = new Date("03-24-2019");
    /* this fails with NaN*/
    d.w( formatDateTimeToString(date)+"<BR>");