2014-12-05 47 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"); 
相關問題