为什么使用JavaScript';s日期对象在Firefox中无效?

为什么使用JavaScript';s日期对象在Firefox中无效?,javascript,jquery,date,firefox,jquery-plugins,Javascript,Jquery,Date,Firefox,Jquery Plugins,我在一个div中有一个日期,看起来像“2013年4月30日”,我想把它转换为:30星期二 2013年4月 我已经写了一些代码来进行转换。它在Chrome中工作正常,但在Firefox和firebug控制台中却不工作,它会显示:Date{Invalid Date},并显示输出看起来像NaN undefined undefined | NaN。我的代码如下所示或: (函数($){ $.fn.bcDateModify=函数(){ 返回此值。每个(函数(){ var obj=这个; var srcDat

我在一个div中有一个日期,看起来像“2013年4月30日”,我想把它转换为:30星期二 2013年4月


我已经写了一些代码来进行转换。它在Chrome中工作正常,但在Firefox和firebug控制台中却不工作,它会显示:Date{Invalid Date},并显示输出看起来像NaN undefined undefined | NaN。我的代码如下所示或:

(函数($){
$.fn.bcDateModify=函数(){
返回此值。每个(函数(){
var obj=这个;
var srcDate=$(obj.html();
srcDate=srcDate.replace(/\s+/g',);
objDate=新日期(srcDate);
console.log(objDate);
var newDate=objDate.getDate();
var newDay=objDate.getDay();
var newMonth=objDate.getMonth();
var newYear=objDate.getFullYear();
var weekday=新数组(“星期日”、“星期一”、“星期二”、“星期三”、“星期四”、“星期五”、“星期六”);
var monthNames=新数组(“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”);
var myhtml=''+newDate+''+weekday[newDay]+''+monthNames[newMonth]+'|'+newYear+'';
$(obj).html(myhtml);
});
};
}(jQuery));
$(文档).ready(函数(){
$('.date obj').bcDateModify();
});

您不能按照自己的方式构造日期(至少在Firefox中不能),例如输入字符串“22-Jul-2013”

我换了这行

objDate = new Date(srcDate);

以确保日期构造正确


查看更新的小提琴。

我知道这可能不是最好的答案,但我发现这类问题在跨浏览器时非常棘手。这个小图书馆为我节省了很多时间

老实说,我觉得JavaScript应该像PHP或其他语言一样内置这些东西。

刚刚发现了关于FF中带连字符日期的用法。似乎没有一个FF版本支持这种格式

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

srcDate = srcDate.replace(/-/g, ' ');
此解决方案可跨浏览器使用,并已在Firefox v19、Chrome v24和Safari v5.1.7(Windows上)中进行了测试


firebug控制台中显示:日期{无效日期}。并显示输出类似于NaN undefined undefined | NaNAdd
console.log(srcDate)之前<代码>对象日期=新日期(srcDate)并写下它做了什么log@KamilT它显示:2013年7月21日,顺便说一句,你可以在我提供的JSFIDLE中看到这一点。只需去掉破折号<代码>新日期('2013年4月30日'):表示日期的字符串值。字符串应采用解析方法识别的格式(符合IETF的RFC 2822时间戳)。-“表示RFC2822或ISO 8601日期的字符串。”可怜的firefox开发人员:(
var dateSplit = srcDate.split("-");            
objDate = new Date(dateSplit[1] + " " + dateSplit[0] + ", " + dateSplit[2]);
moment("30-Apr-2013", "DD-MMM-YYYY").format("DD dddd MMM | YYYY");
srcDate = srcDate.replace(/-/g, ' ');