JavaScriptでyyyymmdd形式の日付とhhmmss形式の時刻を取得(変換)

JavaScript

ログ出力処理や、バッチ処理を行っていると、日付を「/」や「-」がない形式の文字で取得したい場合や、時刻を「:」がない形式で取得したいことがあります。

そこで今回は、JavaScriptで日付を「yyyymmdd」形式で取得(変換)する方法と、時刻を「hhmmss」形式で取得する方法を紹介します。

日付(Date)を「yyyymmdd」形式の文字列に変換する

日付(Date)を「yyyymmdd」形式の文字列に変換する際は
まず、JavaScriptのDateオブジェクトから取得した「年」「月」「日」の値を取得します。
次に、取得した「年」「月」「日」のそれぞれを「yyyy」「mm」「dd」の文字列に変換します。
最後に、連結して「yyyymmdd」形式の文字列を作成します。

Dateオブジェクトから「年」「月」「日」を取得

Dateオブジェクトから「年」を取得する際は、getFullYearメソッドを使用します。

getFullYearメソッドは、指定された日時の「年」を返します。
JavaScriptにはDateオブジェクトから「年」を取得するメソッドに「getYear」もありますが「getFullYear」の方を使用します。
getYearメソッドの仕様は非推奨になっており、正しい年の値が取得できませんので注意してください。

「月」を取得する際は、getMonthメソッドを使用します。

getMonthメソッドは、指定された日時の「月」を「0」を基点とした値(0から始まる値)を返します。
ですので「1月」は「0」になり、「12月」は「11」になります。
そこで、getMonthメソッドで取得した値に「1」を加算して「1」~「12」になるように調整します。

「日」を取得する際は「getDate」メソッドを使用します。

getDateメソッドは、指定された日時の「日」を「1」を基点とした値(1から始まる値)で返します。
getMonthメソッドのように調整する必要はありませんので、そのまま取得できます。

取得した「年」「月」「日」を文字列に変換

getFullYearメソッドで取得した「年」は4桁の数値になっていますので、toStringメソッドを使用して変換するか、Stringオブジェクトの引数に指定して文字列に変換します。

getMonthメソッドで取得した「月」と、getDateメソッドで取得した「日」は、数値になっていますので「mm」または「dd」形式にするために、先頭を0で埋めます。
先頭を「0」で埋める際は、「月」または「日」の値の前に文字列の「00」を付加し、その値をsliceメソッドで右から2文字切り取ります。

「年」「月」「日」のそれぞれの値(文字列)が取得できたら、それを連結して「yyyymmdd」形式の文字列を作成します。

「yyyy + mm + dd」の部分は、テンプレートリテラル(テンプレート文字列)を使用して「${yyyy}${mm}${dd}」とすることもできます。

ここまでの一連の処理をまとめておきます。

時刻を「hhmmss」形式の文字列に変換する

時刻の場合も日付と同様に取得できます。
Dateオブジェクトから「時」「分」「秒」を取得するメソッドで値を取得し、それを先頭に0を埋めた文字列に変換します。

時刻を取得する処理をまとめると次のようになります。

function(関数)化しておく

日付を「yyyymmdd」形式に変換する処理と、時刻を「hhmmss」形式に変換する処理は、function(関数)にしておくと再利用できるので便利です。
以下にそれぞれの値を取得するfunctionのコードを記載しておきます。