我对moment.js有一个奇怪的问题。我编写了一个函数来将时间从utc转换为德语时间格式,并且所有内容在chrome中都可以正常工作。但是现在我用firefox尝试了它,在这里我的日期无效。
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,但无论如何都无法让它发挥作用。有人可以帮助我吗?
答案 0 :(得分:10)
从您的问题中不清楚哪部分代码会抛出错误,但可能的罪魁祸首是Moment.js只是委托Date.parse
代替非ISO-8601字符串:https://github.com/moment/moment/issues/1407 < / p>
因此,假设您使用Moment来解析用户输入或未知格式的其他字段,或者解析非ISO-8601的格式,您将必须明确指定格式以保证交叉浏览器行为。否则你会潜入跨浏览器Date.parse
的迷宫 - 唯一一致的格式是ISO-8601。
答案 1 :(得分:2)
moment(date_string, date_format);
在解析日期的同时传递格式。实施例
moment("25/12/1995", "DD/MM/YYYY");