JavaScript Moment で日付を扱う #5

株式会社リュディアです。moment の続きです。今回は比較を含む演算についてまとめてみました。掲載するソースコードはすべて GAS の開発環境で動作確認をしています。

では、さっそく以下のコードから進めていきます。isBefore, isAfter, isSame を使ったサンプルを記載しています。

function myMoment4_1() {
 const date1 = Moment.moment( '2018/2/5' ) ;
 const date2 = Moment.moment( '2020/8/7' ) ;
 const date3 = Moment.moment( [ 2020, 7, 7 ] ) ;
 
 console.log( date1.toArray() ) ;
 console.log( date2.toArray() ) ;
 console.log( date3.toArray() ) ;
 
 console.log( date1.isBefore( date2 ) ) ;
 console.log( date2.isBefore( date1 ) ) ;
 
 console.log( date1.isAfter( date2 ) ) ;
 console.log( date2.isAfter( date1 ) ) ;
 
 console.log( date1.isSame( date2 ) ) ;
 console.log( date2.isSame( date3 ) ) ;
}

// 実行結果
// [ 2018, 1, 5, 0, 0, 0, 0 ]
// [ 2020, 7, 7, 0, 0, 0, 0 ]
// [ 2020, 7, 7, 0, 0, 0, 0 ]
// true
// false
// false
// true
// false
// true

date1 は 2018/2/5、date2 は 2020/7/7 です。まず date1.isBefore( date2 ) を見てみます。実行結果は true です。date1 と date2 の場所で混乱するかもしれませんが、これは英文であると解釈してみましょう。つまり "date1 (2018/2/5) is before date2 (2020/7/7)". このように考えると date1 は date2 より前なので true になることが理解できますね。同じように isAfter, isSame も英文だと思えばなぜ戻り値が true, false になるのか理解できると思います。

他に moment でよく使うメソッドとして、isSameOrBefore, isSameOrAfter, isBetween があります。ただこれらの関数は 2020, 9/5段階で GAS ではサポートされていません。GASの開発環境でプログラムに記述し保存する段階で エラーが表示されます。少し面倒ですが、これらの関数は isSame, isBefore, isAfter を組合わせることで実現できますので現段階では諦めましょう。

これで moment についてのまとめは終了です。Date オブジェクトを使うより Moment オブジェクトを使う方が利便性を確保できますので是非使ってみてください。

では、ごきげんよう。




この記事が気に入ったらサポートをしてみませんか?