日期格式YYYY-MM-DD无法在Safari中使用

时间:2012-01-03 23:28:29

标签: javascript date safari format

我有这个问题,Safari无法识别日期格式2012-01-03(即2012年1月3日)。我在数组中有日期,然后我想将它们转换为这种格式 - 1月3日星期二

适用于Chrome,但Safari正在抛出未定义的未定义NaN

以下一些代码......

(function() {
    var days = ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
        months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sept','Oct','Nov','Dec'];
    Date.prototype.getDayName = function() {
        return days[this.getDay()];
    };
    Date.prototype.getMonthName = function() {
        return months[this.getMonth()];
    };
})();

var issues = ['2012-01-03', '2012-01-02', '2012-01-01', '2011-12-31'];

for (var i = 0; i < issues.length; i++) {
      var d = new Date(issues[i]);
      var date = d.getDate(),
      weekday = d.getDayName(),
      month = d.getMonthName();
      day = weekday + ' ' + month + ' ' + date;               
      $('.datepicker').find('ul').append('<li class="issue_' + i + '">' + day + '</li>');
}   

我只需要这个就可以用于Safari / Mobile Safari,所以不要使用任何js库。

2 个答案:

答案 0 :(得分:2)

简单的调试显示错误:

var d = new Date(issues[i]);
console.log(d);

它不喜欢日期格式。你可以改变它:

var issues = ['01/03/2012', '01/02/2012', '01/01/2011', '12/31/2011'];

或者您可以进行拆分并以所有浏览器支持的格式执行

var dateParts = issues[i].split(/-/);
var d = new Date(dateParts[0],parseInt( dateParts[1], 10) -1,dateParts[2]);

http://jsfiddle.net/TveJU/

答案 1 :(得分:0)

在各种浏览器中进行日期解析是众所周知的不一致和挑剔。我一直使用Datejs(http://www.datejs.com/),这是一个很好的小js库,它增加了内置的Date对象。看看吧。