美文网首页
js日期格式化兼容IOS

js日期格式化兼容IOS

作者: 油油011 | 来源:发表于2017-11-26 02:58 被阅读0次

    问题:IOS/safari设备上,接口返回日期为字符串格式「 yyyy-MM-dd hh:mm:ss」, 经过new Date(str)后会出现Nan
    解决:将分隔符 " - " 转为 " / "

    ▍日期格式化

     Date.prototype.Format = function (fmt) { //author: meizz
      const o = {
        "M+": this.getMonth() + 1, //月份
        "d+": this.getDate(), //日
        "h+": this.getHours(), //小时
        "m+": this.getMinutes(), //分
        "s+": this.getSeconds(), //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds() //毫秒
      };
      if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
      for (let k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
      return fmt;
    };
    

    ▍格式化前进行数据处理

    var formatDate = function (dateStr, formatter) {
      if (!dateStr) {
        return "";
      }
     
      if (typeof dateStr === "string") {
        if (dateStr.indexOf(".") > -1) {
          // 有些日期接口返回带有.0。
          dateStr = dateStr.substring(0, dateStr.indexOf("."));
        }
        // 解决IOS上无法从dateStr parse 到Date类型问题
        dateStr = dateStr.replace(/-/g, '/');
      }
      return new Date(dateStr).Format(formatter);
    };
    

    ▍调用方式

    // 将 1980-02-03 22:22:22 格式化成 1980年02月03日
    var result = formatDate('1980-02-03 22:22:22', 'yyyy年MM月dd日');
    

    相关文章

      网友评论

          本文标题:js日期格式化兼容IOS

          本文链接:https://www.haomeiwen.com/subject/scghbxtx.html