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

haibao 笔记 2017-12-19 11:33 726
一个人的价值, 在于他贡献了什么, 而不在于他获得了什么。——爱因斯坦

凌晨好, 本文除去代码部分,共1267个字,预计阅读时间需要4分钟。

先看一个要实现的场景:

如图:

一般正常情况使用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下提示如图:

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

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

改为:

1
var currentDate = new Date('2017-12-18 15:00:48'.replace(/\s/, 'T')).getTime();

此问题即可解决。

当然也有其他的解决方法,比如:momentjs

参考文档:

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

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

本文标题:IOS/Safari中的new Date()的格式化坑

本文地址:http://www.hehaibao.com/ios-safari-new-date-bug/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!

6条评论
  • 趣头条

    2018-02-07 19:03

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

  • 屌炸天

    2018-02-05 16:56

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

  • xing1982

    2018-02-04 14:44

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

  • 1163848899

    2018-01-27 20:06

    博客还真是个好东西!

  • 套图网

    2018-01-08 09:43

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

  • 八达网

    2018-01-02 15:06

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注