はじめに
JavaScriptのプログラムを書いているときに日付を扱いたいときがあります。JavaScriptに標準で用意されているのが、Dateオブジェクトです。
Dateオブジェクトは日時をミリ秒形式のデータとして持つオブジェクトです。日付の計算を行うときにはGETメソッドとGETメソッドを使って計算できます。
Dateオブジェクトのリファレンスはこちらです。
Dateオブジェクト
オブジェクトの生成
Dateオブジェクトを使うときは必ずオブジェクトの生成を行います。Dateオブジェクトの生成でよく使うのは3パターンです。
- 今日日付で生成
- 文字列指定で生成
- 数値指定で生成
今日の日付で生成する場合はこのように書きます。引数は必要ありません。
var date = new Date(); //2020年4月25日
文字列指定で生成する場合はこのように書きます。引数には文字列を渡します。
var date1 = new Date('2020-04-25'); //2020年4月25日
var date2 = new Date('2020/04/25'); //2020年4月25日
数値指定で生成する場合はこのように書きます。引数には(年,月,日)を渡します。ただし月は実際の月から1つずれて0~11となります。
var date = new Date(2020,3,25); //2020年4月25日
ここで作成したオブジェクトを使用してメソッドを使います。
GETメソッド
年を取得する
オブジェクトが持つ日時データの「年」を取得します。
var date = new Date();
var year = date.getFullYear(); //2020
月を取得する
オブジェクトが持つ日時データの「月」を取得します。ただし、0 – 11で取得するため。1を加算する必要があります。
var date = new Date();
var month = date.getMonth() + 1; //4
日を取得する
オブジェクトが持つ日時データの「日」を取得します。
var date = new Date();
var day = date.getDate(); //25
曜日を取得する
オブジェクトが持つ日時データの「曜日」を取得します。0(日)-6(土)の数値で取得します。
var date = new Date(); //2020年4月25日(土)
var weekDay = date.getDay(); //6
時間を取得する
オブジェクトが持つ日時データの「時間」、「分」、「秒」を取得します。
var date = new Date(); //2020年4月25日 20時30分15秒
var hour = date.getHours(); //20
var minute = date.getMinutes(); //30
var second = date.getSeconds(); //15
SETメソッド
setメソッドは取得したオブジェクトに値を設定します。
使い方は基本的にGETメソッドと同じですが、引数に設定したい数値を設定します。メソッド名はgetをsetにします。使用するときはこのように書きます。
//オブジェクトの生成
var date = new Date(); //2020年4月25日 20時30分15秒
//「年」を設定、引数は4桁で年
date.setFullYear(2000);
//「月」を設定、引数は0-11で月
date.setMouth(11);
//「日」を設定、引数は1-31で日
date.setDate(31);
//「時間」を設定、引数は0-23で時間
date.setHours(23);
//「分」を設定、引数は0-59で分
date.setMinutes(59);
//「秒」を設定、引数は0-59で秒
date.setSeconds(59);
//コンソールに出力して確認する
console.log(date); //2000年12月31日 23時59分59秒
まとめ
このようにDateオブジェクトを生成し、getメソッドとsetメソッドを使って計算できます。
月は0-11で保持されていることや、曜日は日曜始まりになっていることなど知らないと実際にコーディングしているときに意外と苦戦するので覚えておきましょう。
また複雑な計算をするときはDateオブジェクトだとかなりコードの量が増えてしまい、バグの原因になったり、コードの管理が大変になってしまいます。日付の計算はライブラリがたくさん出ているので使ってみてはいかがでしょうか。私はmoment.jsというライブラリを使っています。