JavaScript 日付を扱う #1

株式会社リュディアです。今回は JavaScript で日付を扱う方法についてまとめてみたいと思います。掲載するソースコードはすべて GAS の開発環境で動作確認をしています。

いつものように、まずは難しいことは言わずにコードを書いてみましょう。以下のコードをみてください。

function myFunction() {
 const now = new Date() ;
 const year = now.getFullYear() ;
 const month = now.getMonth() ;
 const date = now.getDate() ;
 const day = now.getDay() ;
 const hours = now.getHours() ;
 const minutes = now.getMinutes() ;
 const seconds = now.getSeconds() ;
 
 console.log( now ) ;
 console.log( year ) ;
 console.log( month ) ;
 console.log( date ) ;
 console.log( day ) ;
 console.log( hours ) ;
 console.log( minutes ) ;
 console.log( seconds ) ;
 
}

// 実行結果
// Mon Aug 31 2020 20:58:04 GMT+0900 (日本標準時)
// 2020
// 7
// 31
// 1
// 21
// 14
// 37

変数 now に new で Date 型のオブジェクトを生成して代入しています。Date型オブジェクトは引数無しで呼び出すと、呼び出した時点のオブジェクトを生成します。そのため now を表示すると "Mon Aug 31 2020 20:58:04 GMT+0900 (日本標準時)"のようになります。私が今この記事を書いている時間が表示されています。

次にそれぞれ個別の日付、時間情報を取得してみたいと思います。プログラムでは年、月、日、曜日、時間、分、秒の順に取得しています。年、日、時間、分、秒は実行結果を見るとそれっぽい数字が出ていますが月、曜日はよくわかりませんね。個別にみていきましょう。

function myMonth() {
 const now = new Date() ;
 const month = now.getMonth() + 1 ;
 console.log( month ) ;
}

// 実行結果
// 8

月を得る getMonth は実際の月よりも1だけ小さい数字を返します。これは1月を 0 としているためです。そのため実際の月を得るには getMonth の戻り値に + 1 する必要があります。サンプルを見てもらえばわかりますね。

次に曜日です。こちらは日曜日を 0 とし、月曜日を 1、というように各曜日に数字を割り当てています。これらの数字を実際の曜日に変換するには以下のような配列を準備するのが常套手段です。

function myDay() {
 const engDayArray = [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat' ] ;
 const jpDayArray  = [ '日', '月', '火', '水', '木', '金', '土' ] ;
 const now = new Date() ;
 const day = now.getDay() ;
 
 console.log( engDayArray[ day ] ) ;
 console.log( jpDayArray[ day ] ) ;
}

// 実行結果
// Mon
// 月

英語の曜日を日曜から並べた配列 engDayArray と日本語の曜日を日曜から並べた配列 jpDayArray を準備し、getDay の戻り値を配列のインデクスとして呼び出します。これで人間が見てわかる英語表記、日本語表記の曜日が表示されます。

最後になぜ年を使うときのみ getYear ではなくて getFullYear なのでしょうか?これは JavaScript の歴史的な経緯によるもので、これからプログラムを書く人は getFullYear を使うようにしてください。詳細をしりたい方はこちらを参照してください。

「日付を扱う」の初回なので基本的なことだけ記載しました。プログラムを作る際に日付の扱いは重要です。少しずつ慣れていってください。

では、ごきげんよう。



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