ログ出力処理や、バッチ処理を行っていると、日付を「/」や「-」がない形式の文字で取得したい場合や、時刻を「:」がない形式で取得したいことがあります。
そこで今回は、JavaScriptで日付を「yyyymmdd」形式で取得(変換)する方法と、時刻を「hhmmss」形式で取得する方法を紹介します。
目次
日付(Date)を「yyyymmdd」形式の文字列に変換する
日付(Date)を「yyyymmdd」形式の文字列に変換する際は
まず、JavaScriptのDateオブジェクトから取得した「年」「月」「日」の値を取得します。
次に、取得した「年」「月」「日」のそれぞれを「yyyy」「mm」「dd」の文字列に変換します。
最後に、連結して「yyyymmdd」形式の文字列を作成します。
Dateオブジェクトから「年」「月」「日」を取得
Dateオブジェクトから「年」を取得する際は、getFullYearメソッドを使用します。
1 2 3 |
const date = new Date(); // Dateオブジェクトから年を取得します。 const y = date.getFullYear(); |
getFullYearメソッドは、指定された日時の「年」を返します。
JavaScriptにはDateオブジェクトから「年」を取得するメソッドに「getYear」もありますが「getFullYear」の方を使用します。
getYearメソッドの仕様は非推奨になっており、正しい年の値が取得できませんので注意してください。
「月」を取得する際は、getMonthメソッドを使用します。
1 2 3 |
const date = new Date(); // Dateオブジェクトから月を取得します。 const m = date.getMonth() + 1; |
getMonthメソッドは、指定された日時の「月」を「0」を基点とした値(0から始まる値)を返します。
ですので「1月」は「0」になり、「12月」は「11」になります。
そこで、getMonthメソッドで取得した値に「1」を加算して「1」~「12」になるように調整します。
「日」を取得する際は「getDate」メソッドを使用します。
1 2 3 |
const date = new Date(); // Dateオブジェクトから日を取得します。 const d = date.getDate(); |
getDateメソッドは、指定された日時の「日」を「1」を基点とした値(1から始まる値)で返します。
getMonthメソッドのように調整する必要はありませんので、そのまま取得できます。
取得した「年」「月」「日」を文字列に変換
getFullYearメソッドで取得した「年」は4桁の数値になっていますので、toStringメソッドを使用して変換するか、Stringオブジェクトの引数に指定して文字列に変換します。
1 2 |
// 年を「yyyy」形式の文字列で取得します。 const yyyy = y.toString(); |
getMonthメソッドで取得した「月」と、getDateメソッドで取得した「日」は、数値になっていますので「mm」または「dd」形式にするために、先頭を0で埋めます。
先頭を「0」で埋める際は、「月」または「日」の値の前に文字列の「00」を付加し、その値をsliceメソッドで右から2文字切り取ります。
1 2 3 4 |
// 月を「mm」形式の文字列で取得します。 const mm = ("00" + m).slice(-2); // 日を「dd」形式の文字列で取得します。 const dd = ("00" + d).slice(-2); |
「年」「月」「日」のそれぞれの値(文字列)が取得できたら、それを連結して「yyyymmdd」形式の文字列を作成します。
1 |
const yyyymmdd = yyyy + mm + dd; |
「yyyy + mm + dd」の部分は、テンプレートリテラル(テンプレート文字列)を使用して「${yyyy}${mm}${dd}
」とすることもできます。
ここまでの一連の処理をまとめておきます。
1 2 3 4 5 6 7 8 9 10 |
const y = date.getFullYear(); const m = date.getMonth() + 1; const d = date.getDate(); const yyyy = y.toString(); const mm = ("00" + m).slice(-2); const dd = ("00" + d).slice(-2); const yyyymmdd = yyyy + mm + dd; //const yyyymmdd = `${yyyy}${mm}${dd}`; |
時刻を「hhmmss」形式の文字列に変換する
時刻の場合も日付と同様に取得できます。
Dateオブジェクトから「時」「分」「秒」を取得するメソッドで値を取得し、それを先頭に0を埋めた文字列に変換します。
1 2 3 4 5 6 |
// Dateオブジェクトから時を取得します。 const h = date.getHours(); // Dateオブジェクトから分を取得します。 const m = date.getMinutes(); // Dateオブジェクトから秒を取得します。 const s = date.getSeconds(); |
1 2 3 4 5 6 |
// 時を「hh」形式の文字列で取得します。 const hh = ("00" + h).slice(-2); // 分を「mm」形式の文字列で取得します。 const mm = ("00" + m).slice(-2); // 秒を「ss」形式の文字列で取得します。 const ss = ("00" + s).slice(-2); |
時刻を取得する処理をまとめると次のようになります。
1 2 3 4 5 6 7 8 9 10 |
const h = date.getHours(); const m = date.getMinutes(); const s = date.getSeconds(); const hh = ("00" + h).slice(-2); const mm = ("00" + m).slice(-2); const ss = ("00" + s).slice(-2); const hhmmss = hh + mm + ss; //const hhmmss = `${hh}${mm}${ss}`; |
function(関数)化しておく
日付を「yyyymmdd」形式に変換する処理と、時刻を「hhmmss」形式に変換する処理は、function(関数)にしておくと再利用できるので便利です。
以下にそれぞれの値を取得するfunctionのコードを記載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
// 「yyyymmdd」形式の日付文字列に変換する関数 function formatDateInYyyymmdd(date) { const y = date.getFullYear(); const m = date.getMonth() + 1; const d = date.getDate(); const yyyy = y.toString(); const mm = ("00" + m).slice(-2); const dd = ("00" + d).slice(-2); return yyyy + mm + dd; } // 「hhmmss」形式の時刻文字列に変換する関数 function formatDateInHhmmss(){ const h = date.getHours(); const m = date.getMinutes(); const s = date.getSeconds(); const hh = ("00" + h).slice(-2); const mm = ("00" + m).slice(-2); const ss = ("00" + s).slice(-2); return hh + mm + ss; } // 使用例 const date = new Date(); const yyyymmdd = formatDateInYyyymmdd(date); const hhmmss = formatDateInHhmmss(date); |