2017-04-13 6 views
0

日付が異なるモーメントオブジェクトの時刻が同じかどうかをチェックする方法は?例えば時刻がMoment.jsと同じであることを確認してください

私は

const endDate = moment().add(30, 'days').endOf('day'); 

のような物を持っていると私はいくつかの瞬間のオブジェクトがendOf日であるかどうかを確認したいです。私は「分」パラメータを渡すとき

private isEndOfDay(dateTime: string) { 
    const m = moment().endOf('day'); 

    return m.isSame(dateTime, 'minute'); 
} 

const receivedDateFormat: string = 'YYYY-MM-DD hh:mm:ss'; 

this.isEndOfDay(this.endDate.format(this.receivedDateFormat)) 

しかし、このような場合のために、それは私がチェックしたいものではありませんこれは...分、時間、日、月、年をチェックします。

+1

'dateTime'は文字列です。瞬間に変換する必要があります – Satpal

+0

@Satpal、はい、それは文字列です...しかし、このページによれば、私は文字列を渡すことができますhttp://momentjs.com/docs /#/ query/is-same/ – demo

+0

'dateTime'の値はどれですか?文字列は瞬時に解析可能でなければなりません(例えばISO 8601形式) – VincenzoC

答えて

2

挙動は第二パラメータを含む場合、それは同等以上のすべてのユニットにマッチする

であることを説明documentationの一部。月を渡すと、月と年がチェックされます。日を過ぎると、日、月、年がチェックされます。だから、

、あなたはわずか数分を比較したい場合は、あなただけの時間を比較するために

endDate.minute() === startDate.minute() 

ような何かをする必要があります、形式()日付

endDate.format('HH:mm:ss') === startDate.format('HH:mm:ss') 
+0

分だけでなく、すべての時間(時、分、秒...)をチェックしますか? – demo

+0

答えを更新@demo – baao

+0

この条件は '11:00:00'と' 23:00:00'を比較すると真で、大文字の 'HH'を使用して24時間形式を取得します。 – VincenzoC

1

時間部分のみを比較するには、入力した日付(年、月、日)を入力します。

'minute'~isSameを渡すと秒数は無視されますのでご注意ください。ここで

ライブのサンプル:

function isEndOfDay(dateTime) { 
 
    let m = moment().endOf('day'); 
 
    let m2 = moment(dateTime); 
 
    m2.set({ 
 
    y: m.year(), 
 
    M: m.month(), 
 
    D: m.date() 
 
    }); 
 
    return m.isSame(m2, 'minute'); 
 
} 
 

 
var endDate = moment().add(30, 'days').endOf('day'); 
 
const receivedDateFormat = 'YYYY-MM-DD hh:mm:ss'; 
 

 
var ret = isEndOfDay(endDate.format(this.receivedDateFormat)) 
 
console.log(ret);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

もう一つの方法は、あなたのために重要でユニットのみをチェックしているためにする:

function isEndOfDay(dateTime) { 
 
    let m = moment().endOf('day'); 
 
    let m2 = moment(dateTime); 
 
    if(m.hours() === m2.hours() && 
 
     m.minutes() === m2.minutes() && 
 
     m.seconds() === m2.seconds()){ 
 
    return true; 
 
    } 
 
    return false; 
 
} 
 

 
var endDate = moment().add(30, 'days').endOf('day'); 
 
const receivedDateFormat = 'YYYY-MM-DD hh:mm:ss'; 
 

 
var ret = isEndOfDay(endDate.format(this.receivedDateFormat)) 
 
console.log(ret);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

ドキュメントのGet + Setセクションを参照して、モーメントオブジェクトの単位を取得および設定する方法を参照してください。

関連する問題