2014-12-05 102 views
3

我在使用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,但无法让它工作。有人可以帮我吗?

回答

10

这不是从你的问题这部分代码抛出错误清楚,但可能的罪魁祸首是Moment.js只是委托给Date.parse非ISO-8601字符串:https://github.com/moment/moment/issues/1407

所以假设你'使用Moment解析用户输入或其他未知格式的字段,或者解析不是ISO-8601的格式,您将不得不明确指定格式以保证跨浏览器的行为。否则,你会潜入跨浏览器Date.parse的偏僻地区 - 唯一符合ISO-8601标准的格式。

+0

现在我明白了......谢谢你,我完全错了。 – baao 2014-12-05 23:06:26

+0

也可以直接从datepicker插件获取日期对象,而不是使用输入值。 http://api.jqueryui.com/datepicker/#method-getDate – charlietfl 2014-12-05 23:31:08

0
moment(date_string, date_format); 

传递格式,同时解析你的日期和时刻。示例

moment("25/12/1995", "DD/MM/YYYY"); 
相关问题