2013-07-26 47 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

相關問題