我正在使用脚本日历,当我选择日期时,它会将其转换为新格式(yyyy-mm-dd)
它适用于大多数浏览器,但在Firefox和Opera中,我得到的日期格式无效,因为我使用的格式是RFC 822。
我正在寻找一种转换此日期格式的方法
示例:
Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)
并将其更改为
2011-09-08
可以在javascript中完成吗?
更新
这是我的代码试图将(EDT)替换为空白
$(".taskDate").datepick({
onSelect: function(selectedDate){
selectedDate = selectedDate.replace(/ \(.+\)/, '');
//alert(selectedDate);
var newDate = new Date(selectedDate);
$(".selectedDate").text(newDate.getFullYear()+'-'+(newDate.getMonth()+1)+'-'+newDate.getDate());
location.href="index.php?date="+newDate.getFullYear()+'-'+(newDate.getMonth()+1)+'-'+newDate.getDate();
}
});
现在我收到错误
selectedDate.replace is not a function
怎么回事?
更新2
修正了它,因为它似乎是一个对象,而不是一个darn字符串。 加入
selectedDate = selectedDate.toString();
新的Date()之前的;
现在它适用于所有浏览器......
答案 0 :(得分:2)
适用于Firefox6,请参阅我的jsfiddle。
var sOriginalDate = 'Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)';
var oDate = new Date(sOriginalDate);
var iMonth = oDate.getMonth() + 1;
var iDay = oDate.getDate();
var sNewDate = oDate.getFullYear() + '-'
+ (iMonth < 10 ? '0' : '') + iMonth + '-'
+ (iDay < 10 ? '0' : '') + iDay;
alert(sNewDate);
答案 1 :(得分:1)
由于日期是RFC 822,您可以将其解析为有效日期(结束的EDT不会影响结果):
var dateAsDateObject = new Date(Date.parse(dateInRFC822Format));
这适用于dateInRFC822Format
等于"Thu Sep 08 2011 12:00:00 GMT-0400 (EDT)"
或"Thu Sep 08 2011 12:00:00 GMT-0400"
现在,您可以从dateAsDateObject获取所需信息:
dateAsDateObject.getFullYear()
dateAsDateObject.getMonth()
dateAsDateObject.getDay()
注意:格式化,如果您不介意使用jqueryui,也可以使用$.datepicker.formatDate()
方法。例如。 var stringRepresentation = $.datepicker.formatDate('yy-mm-dd', dateAsDateObject);
答案 2 :(得分:0)
尝试:
var mydate = new Date(originaldate);
mydate = mydate.getYear() + '-' + (mydate.getMonth() + 1) + '-' + mydate.getDate();