2012-01-03 48 views
1

我遇到Safari无法识别日期格式2012-01-03(2012年1月3日)的问题。我有日期的阵列内,然后我想将它们转换为这种格式 - 周二1月3日日期格式YYYY-MM-DD在Safari中不工作

作品在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浏览器/移动Safari浏览器工作,所以不希望使用任何JS库。

回答

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/

0

日常分析在各种浏览器是臭名昭着的不一致和挑剔。我一直使用Datejs(http://www.datejs.com/),这是一个很好的小js库,它扩充了内置的Date对象。一探究竟。

+0

太多的什么,我需要做的,我只专门针对safari/mobile safari。 – calebo 2012-01-03 23:45:22

相关问题