2013-07-26 48 views
2

我有一个看起来像“2013年4月30日”的div的日期,我想将它转换为:30星期二 APR | 2013为什么JavaScript的Date对象在Firefox中无效?

我写了一些代码来为我做这个转换。它在Chrome中工作正常,但有些如何不在Firefox和Firebug控制台中工作,它说:Date {Invalid Date}并显示输出看起来像NaN undefined undefined | NaN的。我的代码看起来是低于或you can also see this Fiddle

(function ($) { 

    $.fn.bcDateModify = function() { 
     return this.each(function() { 
      var obj = this; 
      var srcDate= $(obj).html();    
      srcDate = srcDate.replace(/\s+/g, ''); 

      objDate = new Date(srcDate); 
      console.log(objDate); 
      var newDate = objDate.getDate(); 
      var newDay = objDate.getDay(); 
      var newMonth = objDate.getMonth(); 
      var newYear = objDate.getFullYear(); 

      var weekday=new Array("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"); 
      var monthNames=new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"); 

      var myhtml ='<div class="date"><span>'+newDate+'</span></div><div class="month-day"><h3>'+weekday[newDay]+'</h3><span>'+monthNames[newMonth]+' | '+newYear+'</span></div>'; 
      $(obj).html(myhtml); 
     }); 

    }; 

}(jQuery)); 

$(document).ready(function(){ 
$('.date-obj').bcDateModify(); 
}); 
+0

在萤火虫控制台它说:日期{Invalid Date}。并显示输出看起来像NaN undefined undefined | NaN – Imran

+0

在'objDate = new Date(srcDate);'之前添加'console.log(srcDate);'并且写下它是什么日志 –

+0

@KamilT它显示:2013年7月21日,btw你可以在jsfiddle中看到这个提供。 – Imran

回答

9

你不能建造一个日期你的方式(至少在Firefox中你不能),例如通过字符串“22 - 07月2013”​​的。

我改变了这一行

objDate = new Date(srcDate); 

var dateSplit = srcDate.split("-");    
objDate = new Date(dateSplit[1] + " " + dateSplit[0] + ", " + dateSplit[2]); 

确保日期构建正确。

查看更新的小提琴here

1

我知道这可能不是最好的答案,但我发现这些类型的东西是非常棘手的跨浏览器。这个小型图书馆为我节省了大量的时间。

http://momentjs.com/

moment("30-Apr-2013", "DD-MMM-YYYY").format("DD dddd MMM | YYYY"); 

老实说,我觉得像JavaScript应该有这样的东西建在象PHP或其他语言。

4

刚刚发现这个item有关在FF中使用连字符的日期。似乎没有任何FF版本支持该格式。

一个可能的替代方案是在构建日期之前将-替换为

srcDate = srcDate.replace(/-/g, ' '); 

此方法适用于跨浏览器和Firefox中V19,V24的Chrome和Safari v5.1.7(在Windows上)进行了测试。

Demo

+1

可怜的火狐开发者:( – sMaN

相关问题