2016-03-24 84 views
11

稱,目前的時間是09:34:00hh:mm:ss),我有兩個變量,其他兩次:如何使用Moment.JS檢查當前時間是否是2倍之間

var beforeTime = '08:34:00', 
    afterTime = '10:34:00'; 

如何使用Moment.JS檢查當前時間是否在beforeTimeafterTime之間?

我見過isBetween(),和我試圖使用它像:

moment().format('hh:mm:ss').isBetween('08:27:00', '10:27:00') 

但是,這並不工作,因爲只要我格式化第一(當前時間)瞬間變成一個字符串,它不再是一個時刻對象。我已經使用也嘗試:

moment('10:34:00', 'hh:mm:ss').isAfter(moment().format('hh:mm:ss')) && moment('08:34:00', 'hh:mm:ss').isBefore(moment().format('hh:mm:ss')) 

,但我得到false,因爲當我再次格式化當前時間,它不再是一個時刻。

我如何得到這個工作?

+0

入住這http://stackoverflow.com/questions/23620498/comparing-two-times-with-moment-js – nvartolomei

+0

@nvartolomei我不認爲答案在這個問題上告訴你如何比較當前時間..?它似乎比較了兩次。 –

回答

22
  • 可以傳遞力矩實例isBetween()
  • 忽略了format()調用,你想要的是通過像你的第一個時刻()的int這樣的分析格式嘗試。

這就是:

var format = 'hh:mm:ss' 

// var time = moment() gives you current time. no format required. 
var time = moment('09:34:00',format), 
    beforeTime = moment('08:34:00', format), 
    afterTime = moment('10:34:00', format); 

if (time.isBetween(beforeTime, afterTime)) { 

    console.log('is between') 

} else { 

    console.log('is not between') 

} 

// prints 'is between' 
+0

這似乎太棒了! +1,但是如何在不使用.format()的情況下將當前時間格式化爲'hh:mm:ss'?所以,不是對當前的「時間」進行硬編碼,而是通過時刻獲得它? –

+0

基本上這樣做的一種方式就是:'moment('hh:mm:ss')'沒有真正給出時間,因爲我想要時刻給我...... –

+1

啊,在那種情況下, '。如果不輸入時間字符串,則不必指定輸入格式。後來,當你想用HTML輸出日期時,你想給出一個*輸出*格式,所以你使用'.format('hh:mm:ss')',但是是最後一步。對於之間的所有內容(計算,比較等),不需要格式。 –

-2

頁面上的例子是

moment('2010-10-20').isBetween('2010-10-19', '2010-10-25'); // true 

有到format功能沒有呼叫在你的代碼,所以我建議嘗試

moment('09:34:00').isBetween('08:34:00', '10:34:00'); 
+2

他應該傳遞一個解析格式字符串作爲第二個參數(請參閱我的答案),否則時刻會引發棄用警告。 –

相關問題