JavaScript Moment で日付を扱う #3

株式会社リュディアです。今回は moment で日付情報を出力する方法についてまとめます。JavaScript の標準オブジェクトである Date との違いを感じてもらえたら、と思います。掲載するソースコードはすべて GAS の開発環境で動作確認をしています。

さっそく以下のコードをみてください。今までと同じように now に今の日付情報を持つ moment オブジェクトを生成しています。

function myMoment2_1() {
 const now = Moment.moment() ;
 
 console.log( now.toString() ) ;
 console.log( now.toArray() ) ;
 console.log( now.toJSON() ) ;
 console.log( now.toISOString() ) ;
}

// 実行結果
// Fri Sep 04 2020 15:35:41 GMT+0900
// [ 2020, 8, 4, 15, 35, 41, 785 ]
// 2020-09-04T06:35:41.785Z <- JSON形式になっていない、つまり GAS ではサポートされていない
// 2020-09-04T06:35:41.785Z

now に対して toString を使うと JS Date と呼ばれるフォーマットを返します。次の toArray を使った例では JavaScript の配列形式を返します。プログラムによっては配列で日付、時刻情報を得ると処理を進めやすくなることがあるので上手く利用したい方法です。

次に toJSON と toISOString です。JSONは JavaScript Object Notationの略で JavaScript に適した簡易なデータフォーマットです。JSON の公式な仕様はこちらを参照してください。toJSON なので、JSON フォーマットを返すはずなのですが期待通りになっていません。これは GAS が toJSON をサポートしていないことによります。moment のような外部ライブラリに関して GAS ではすべてが移植されていないことがあります。最後の toISOString は期待通りの動作をしています。注意いただきたいのは、Moment の 公式マニュアルに記載されていてもGAS でサポートされていないことがある、ということは頭にいれておいてください。

次に fomat による出力の違いをみてみましょう。Moment の公式ページには以下の説明があります。

moment_公式ページ情報

では次のコードをみてください。

function myMoment2_2() {
 const now = Moment.moment() ;
 
 console.log( now.format( 'YYYY' ) ) ;
 console.log( now.format( 'YY' ) ) ;
 console.log( now.format( 'Y' ) ) ;
 
 console.log( now.format( 'Q' ) ) ;
 
 console.log( now.format( 'MMMM' ) ) ;
 console.log( now.format( 'MMM' ) ) ;
 console.log( now.format( 'MM' ) ) ;
 console.log( now.format( 'M' ) ) ;
 
 console.log( now.format( 'DDDD' ) ) ;
 console.log( now.format( 'DDD' ) ) ;
 console.log( now.format( 'DD' ) ) ;
 console.log( now.format( 'D' ) ) ;
 console.log( now.format( 'Do' ) ) ;
}

// 実行結果
// 2020
// 20
// Y <- Y と表示されている、つまり GAS ではサポートされていない
// Q <- 4半期単位の表記は GAS ではサポートされていない
// September
// Sep
// 09
// 9
// 248
// 248 <- DDDD と DDD は同じ
// 04
// 4
// 4th

最初は year についてみていきましょう。moment の公式ページの情報では YYYY, YY, Y の3つがサポートされています。YYYY と YY は表示されていますが、Y は Y と表示されています。これも GAS でサポートされていない機能ということになります。

次に月についてみてみましょう。MMMM, MMM, MM, M とすべての形式がサポートされているようです。実行結果を見れば出力の違いについてはわかりますね。

最後に日についてみてみましょう。DDDD, DDD, DD, D と Do です。これらもすべて GAS でサポートされているようです。

今回は日付の出力フォーマットについてまとめてみました。moment を使ってプログラミングをすれば Date よりもさまざまな形式での日付、時刻形式を扱えることがわかったと思います。

では、ごきげんよう。



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