JavaScriptのDateクラスを理解する

プログラミング
JavaScriptで日時を取得、操作するにはDateクラスのオブジェクトを使用します。今回はDateクラスで日付や時間を取得する方法を、実際のコードをまじえて解説します。
JavaScriptのDateクラスを理解する

JavaScriptで日時を取得、操作するにはDateクラスのオブジェクトを使用します。
今回はDateクラスのオブジェクトの作成方法や、Dateクラスのオブジェクトの各種日時取得メソッドについての使い方を、実際のコードをまじえて解説します。

Dateクラスとは

単なる数値や文字列とは異なり、日付の管理は単純なようでいて難しく、考慮すべき事項が多く存在します。うるう年や、ひと月ごとの日数、曜日などの管理は、単なる数字のみで自分で正確に算出するとなると、多くの工数がかかってしまうものです。
この【日付】という概念をプログラミング上で簡単かつ正確に扱えるよう用意されているのが、【Date】クラスです。

Dateクラスの概要

【Date】クラスは大半のプログラミング言語に用意されています。【日付】という概念はプログラミングでものづくりを行う際にも度々登場する概念であるため、【Date】クラスはどういったプログラミング言語であっても、欠かせない存在なのです。

プログラマの開発の現場においても、日付に関わる実装は頻繁に求められるため、【Date】クラスに習熟することは活躍できるプログラマ・エンジニアになるための第一歩と言えるでしょう。

JavaScriptのDateクラス

JavaScriptのDateクラスには次の特徴があります。

  1. Dateをコンストラクタとして呼び出すことでのみDateクラスのインスタンスを作成できる。
  2. 基本的にデバイスの時刻を基準にDateクラスのインスタンスが作成される
  3. dateFormat()系メソッドが用意されていない

1.の【コンストラクタとして呼び出す】とは【new Date()】といった記法でDateを作成する、という意味です。 JavaScriptにおいて、Dateクラスのインスタンスは必ずこの記法で作成します。

2.の【ブラウザの時刻を基準に】とは、つまりは【サーバの時刻ではない】ということです。これは【ユーザの環境に応じて時刻にブレが出る】ということを示します。

3.の【dateFormat()系メソッド】とは、いくつかのプログラミング言語で用意されている【日付の整形用メソッド】のことを示します。

JavaScriptにはそういった日付整形メソッドは存在していないため、もし日付の整形処理のメソッドが必要な場合、自前で用意する必要があります。

JavaScriptで現在の日時を求める方法

JavaScriptで現在の年や月、日付や曜日を取得するには【Dateクラスのインスタンス】、つまり【Dateオブジェクト】を作成し、利用する必要があります。
実際にどのようなコードで日時を算出するのか、ここから実際のプログラムと一緒に解説していきます。

new Date() で現在日時のDateオブジェクトを作成する

まず【Dateオブジェクト】の作成方法です。JavaScreiptのDateオブジェクトは、Dateをコンストラクタとして呼び出すことでのみ作成可能です。
これは以下のように書きます。

var currentDate = new Date()

これで、変数currentDateは【現在の日時】を示す【Dateオブジェクト】になりました。

さらに、作成した現在の日時のDateオブジェクトが、【実際にどういった数値として管理されているか】について知りたければ、【getTime()】メソッドを使用することで、取得ができます。

var currentDate = new Date()
var time = currentDate.getTime()
console.log(time) /* 1970年1月1日0時0分0秒から経過したミリ秒が出力される */

ログに出力された変数timeの中身には【1970年1月1日0時0分0秒から経過したミリ秒】が入っています。このミリ秒の値によって、Dateオブジェクトの日時が管理されています。

実際に現在日時のDateオブジェクトから【何年】や【何月】といった数値を取得するには、作成したDateオブジェクト自身が持つ各種メソッドを使用する必要があります。

getFullYear() で年を取得する

まず、年を取得するコードを紹介します。
年を取得するにはDateオブジェクトのメソッド【getFullYear()】を使用します。

var currentDate = new Date()
var year = currentDate.getFullYear()
console.log(year)  /* 今が2019年なら【2019】が出力される*/

JavaScriptにはこの他に【getYear()】という年取得用メソッドが用意されていますが、ここで紹介した【getFullYear()】メソッドを使用することが現在では推奨されています。

getMonth() で月を取得する

月を取得するには以下のコードを用います。

var currentDate = new Date()
var month = currentDate.getMonth()
console.log(month) /* 今が2月なら【1】が出力される(※【2】ではない) */

注意が必要なのは、【getMonth()】メソッドは【1月】なら【0】、【2月】なら【1】、【3月】なら【2】を返すということです。JavaScriptにおいて、【月はゼロ始まり】なのです。

getDate() で日付を取得する

日付は以下のコードで取得できます。

var currentDate = new Date()
var date = currentDate.getDate()
console.log(date) /* 今日が20日なら【20】が出力される */

月と異なり、日付は素直にそのままの日付が数値として出力されます。ゼロ始まりである【月】と混合しないよう気を付けてください。

getDay() で曜日を取得する

曜日は以下のコードで取得できます。

var currentDate = new Date()
var day = currentDate.getDay()
console.log(day) /* 今日が火曜日なら【2】が出力される */

曜日は【日曜日】なら【0】、【月曜日】なら【1】、【火曜日】なら【2】を返します。日曜日からのゼロ始まりであることに気を付けてください。

getHours() で時を取得する

時は以下のコードで取得できます。

var currentDate = new Date()
var hours = currentDate.getHours()
console.log(hours) /* 今が23時なら【23】を出力する*/

このように【getHours()】メソッドは日付同様に、今の時刻そのものの数字を取得します。

getMinutes() で分を取得する

分は以下のコードで取得できます。

var currentDate = new Date()
var min = currentDate.getMinutes()
console.log(min) /* 今が30分なら【30】を出力する*/

【getHours()】メソッドと同様に、分そのものの数値を返却します。【60分】は存在せず、【0分から59分】に該当する【0から59の整数】を【getHours()】メソッドは返却するようになっています。

getSeconds() で秒を取得する

var currentDate = new Date()
var sec = currentDate.getSeconds()
console.log(sec) /* 今が10秒なら【10】を出力する*/

分を取得する【getMinutes()】メソッドと同様に、【getSeconds()】メソッドも【0秒から59秒】に該当する【1から59の整数】を返却します。60秒は存在せず【0秒】として返却されることに気を付けてください。

まとめ

ここまで紹介してきたコードを書くことで、JavaScriptで現在の年月日や時刻の取得が可能となります。Dateオブジェクトが保有する各種メソッドをうまく使って、日付の操作を自在に行っていきましょう。

この記事のキーワードに関する勉強会・イベントを探す

TECH PLAYでは、ITエンジニア向けの勉強会・イベント情報を提供しています。興味のある方はぜひご参加ください。


おすすめのコラム