当前位置:

IOS/Safari中的new Date()的格式化坑

本文最后更新于2017-12-19,已超过 1年没有更新,如果文章内容、图片或者下载资源失效,请留言反馈,我会及时处理,谢谢!

温馨提示:本文共1390个字,读完预计4分钟。

如题,iOS系统下,如果date格式不符合格式的话,会导致不显示或者NAN等问题。

先看一个要实现的场景:

如图:

IOS/Safari中的new Date()的格式化坑-何海宝的博客

一般正常情况使用date都是, new Date()或者自己封装一个格式化日期方法;

举个栗子 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Date.prototype.format = function(fmt) {
    var 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(var 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;
};
 
//这里假如接口返回的日期不是时间戳,而是'2017-12-18 15:00:48'这种;
var monthArr = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月'];
var currentDate = new Date('2017-12-18 15:00:48').getTime();
var date = new Date(currentDate);
var day = date.format("dd"); 
var month = date.format('MM');
console.log('格式化后的日期是:'+ day + ' / ' + monthArr[parseInt(month)-1]);

以上代码经测试,在Chrome和Firefox下都没有问题。

但是在safari下提示如图:

IOS/Safari中的new Date()的格式化坑-何海宝的博客

查阅了MDN, 解决方法如下:

将:

1
var currentDate = new Date('2017-12-18 15:00:48').getTime();

改为:

1
2
3
4
5
var currentDate = new Date('2017-12-18 15:00:48'.replace(/\s/, 'T')).getTime();
 
// 或者
 
var currentDate = new Date('2017-12-18 15:00:48'.replace(/-/g, '/')).getTime();

此问题即可解决。

当然也有其他的解决方法,此处不再展开,有兴趣可以自己研究。

参考文档:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

https://stackoverflow.com/questions/4310953/invalid-date-in-safari

版权申明:本文地址 ,本博客所有文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议。请尊重他人的劳动成果!

我要说两句

  • 6 条回应
    • 头像
      趣头条 发表于

      鸟儿叫,花儿笑,一年一季春来到!

    • 头像
      屌炸天 发表于

      新春佳节到。祝好!祝好!

    • 头像
      xing1982 发表于

      不错不错!内容感觉好极了!

    • 头像
      1163848899 发表于

      博客还真是个好东西!

    • 头像
      套图网 发表于

      毫无疑问,这个是要支持的!

    • 头像
      八达网 发表于

      新年好呀,新年好呀,祝福博主新年好!