moment.js在Firefox中给出无效日期,但不在Chrome中
问题描述:
我在使用moment.js时遇到了一个奇怪的问题。我写了一个函数将时间从utc转换为德文时间格式,并且所有内容在chrome中似乎都能正常工作。但现在我用Firefox试了一下,在这里我得到了一个无效的日期。moment.js在Firefox中给出无效日期,但不在Chrome中
moment.locale("de");
$('#from').datepicker({
format: "DD. MMMM YYYY"
});
$('#from').on('change',function() {
var a = moment($('#from').val(), "DD. MMMM YYYY").format("LLLL");
var b = moment(a).add(7,'days');
var localTime = moment.utc(b).toDate();
localTime = moment(localTime).format('DD. MMMM YYYY');
$('#to').val(localTime);
});
$('#to').datepicker({
format:'DD.MMMM YYYY'
});
$('#sendbtn').on('click',function(){
/...
var from = moment(fromfield.value).format();
var to = moment(tofield.value).format();
/...
$('#calendar').fullCalendar('gotoDate', from);
getEventDate(from,to,persons.value);
}
});
function getEventDate(start,end,people) {
var Calendar = $('#calendar');
Calendar.fullCalendar();
var Event = {
title:"Your stay for "+people+" people",
allDay: true,
start: start,
end: end
};
filljson(start,end,people);
Calendar.fullCalendar('renderEvent', Event);
}
/...
我看过这个answer,但无法让它工作。有人可以帮我吗?
答
这不是从你的问题这部分代码抛出错误清楚,但可能的罪魁祸首是Moment.js只是委托给Date.parse
非ISO-8601字符串:https://github.com/moment/moment/issues/1407
所以假设你'使用Moment解析用户输入或其他未知格式的字段,或者解析不是ISO-8601的格式,您将不得不明确指定格式以保证跨浏览器的行为。否则,你会潜入跨浏览器Date.parse
的偏僻地区 - 唯一符合ISO-8601标准的格式。
答
moment(date_string, date_format);
传递格式,同时解析你的日期和时刻。示例
moment("25/12/1995", "DD/MM/YYYY");
现在我明白了......谢谢你,我完全错了。 – baao 2014-12-05 23:06:26
也可以直接从datepicker插件获取日期对象,而不是使用输入值。 http://api.jqueryui.com/datepicker/#method-getDate – charlietfl 2014-12-05 23:31:08