【今すぐ使える】JavaScriptでDateオブジェクトからYYYYMMDD形式の文字列を取得する方法5選
JavaScript で Date オブジェクトから YYYYMMDD 形式の文字列を取得する方法
toISOString() メソッドを使う
最も簡潔な方法は、toISOString()
メソッドを使うことです。このメソッドは、Date オブジェクトを ISO 形式の文字列に変換します。ISO 形式には YYYY-MM-DD の形式が含まれているので、それを取り出すことで YYYYMMDD 形式の文字列を取得できます。
const date = new Date();
const yyyymmdd = date.toISOString().slice(0, 10);
console.log(yyyymmdd); // 20240630
個別に取得して結合する
個別に年、月、日を取得して結合する方法もあります。この方法は、フォーマットを柔軟にカスタマイズしたい場合に便利です。
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1; // 月は 0 から始まるので、1 を加える
const day = date.getDate();
const yyyymmdd = `${year}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;
console.log(yyyymmdd); // 20240630
ライブラリを使う
Moment.js や Luxon などのライブラリを使うと、より簡単に日付のフォーマット処理を行うことができます。これらのライブラリは、様々なフォーマットに対応しており、オプションでゼロ埋めや区切り文字の設定なども可能です。
// Moment.js を使う場合
const moment = require('moment');
const date = new Date();
const yyyymmdd = moment(date).format('YYYYMMDD');
console.log(yyyymmdd); // 20240630
// Luxon を使う場合
const { DateTime } = require('luxon');
const date = new Date();
const yyyymmdd = DateTime.fromJSDate(date).toFormat('YYYYMMDD');
console.log(yyyymmdd); // 20240630
- 簡潔に YYYYMMDD 形式の文字列を取得したい場合は、
toISOString()
メソッドを使うのがおすすめです。 - フォーマットを柔軟にカスタマイズしたい場合は、個別に取得して結合する方法を使うのがおすすめです。
- 様々なフォーマットに対応したライブラリが必要な場合は、Moment.js や Luxon などのライブラリを使うのがおすすめです。
const date = new Date();
const yyyymmdd = date.toISOString().slice(0, 10);
console.log(yyyymmdd); // 20240630
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1; // 月は 0 から始まるので、1 を加える
const day = date.getDate();
const yyyymmdd = `${year}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;
console.log(yyyymmdd); // 20240630
ライブラリを使う (Moment.js)
// Moment.js をインストールする
// npm install moment
const moment = require('moment');
const date = new Date();
const yyyymmdd = moment(date).format('YYYYMMDD');
console.log(yyyymmdd); // 20240630
ライブラリを使う (Luxon)
// Luxon をインストールする
// npm install luxon
const { DateTime } = require('luxon');
const date = new Date();
const yyyymmdd = DateTime.fromJSDate(date).toFormat('YYYYMMDD');
console.log(yyyymmdd); // 20240630
説明
- 上記のコードは、いずれもブラウザの JavaScript コンソールで実行することを想定しています。
new Date()
は、現在の日付と時刻を含む Date オブジェクトを作成します。- 個別に取得して結合する方法では、
getFullYear()
,getMonth()
,getDate()
メソッドを使って、年、月、日を取得します。その後、toString()
メソッドで文字列に変換し、padStart()
メソッドを使って左側に 0 を埋めて、結合します。 - Moment.js や Luxon などのライブラリを使う場合は、まずライブラリをインストールする必要があります。その後、ライブラリの API を使って、Date オブジェクトから YYYYMMDD 形式の文字列を簡単に取得できます。
補足
- サンプルコードでは、Date オブジェクトを直接取得していますが、引数に日付と時刻を指定して作成することもできます。
- フォーマットをカスタマイズしたい場合は、
toISOString()
メソッドや Moment.js/Luxon のフォーマットオプションを利用することができます。
JavaScript で Date オブジェクトから YYYYMMDD 形式の文字列を取得するその他の方法
toLocaleDateString()
メソッドは、Date オブジェクトをブラウザのロケール設定に基づいた形式の文字列に変換します。ロケール設定によっては、YYYYMMDD 形式の文字列が返される場合があります。
const date = new Date();
const yyyymmdd = date.toLocaleDateString('ja-JP', { year: 'numeric', month: '2-digit', day: '2-digit' });
console.log(yyyymmdd); // 2024-06-30 (ロケール設定によっては異なる形式になる可能性があります)
String.prototype.padStart()
メソッドは、文字列の先頭に指定した文字数を満たすまで指定した文字を埋めます。テンプレートリテラルと組み合わせることで、YYYYMMDD 形式の文字列を簡単に生成できます。
const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1; // 月は 0 から始まるので、1 を加える
const day = date.getDate();
const yyyymmdd = `${year}${month.toString().padStart(2, '0')}${day.toString().padStart(2, '0')}`;
console.log(yyyymmdd); // 20240630
正規表現を使って、toISOString()
メソッドで取得した文字列から YYYYMMDD 部分を抽出する方法もあります。
const date = new Date();
const yyyymmdd = date.toISOString().match(/(\d{4})-(\d{1,2})-(\d{1,2})/)[1, 2, 3].join('');
console.log(yyyymmdd); // 20240630
注意点
toLocaleDateString()
メソッドはロケール設定によって形式が変わるため、常に YYYYMMDD 形式になるとは限りません。String.prototype.padStart()
メソッドや正規表現を使う方法は、toISOString()
メソッドを使う方法よりも処理速度が遅くなる可能性があります。
これらの方法は、状況に応じて使い分けることができます。シンプルな方法で YYYYMMDD 形式の文字列を取得したい場合は、toISOString()
メソッドを使うのがおすすめです。より柔軟なフォーマットが必要な場合は、toLocaleDateString()
メソッドやテンプレートリテラルを使う方法を検討することができます。
javascript date date-formatting