状況によって区切り文字を変えたい
JavaScriptで日付をフォーマットする際に
- YYYYMMDD (区切り文字なし)
- YYYY/MM/DD (スラッシュ区切り)
- YYYY-MM-DD (ハイフン区切り)
- YYYY.MM.DD (ドット区切り)
など状況に応じて区切り文字を変えたいときがあります。
そこで区切り文字を可変で指定できるフォーマット関数を作成しました。
こちらの記事を参考にさせていただいております。
月、日のゼロ埋め(1 → 01) なども解説頂いております。
日付をYYYY-MM-DDの書式で返す関数 (JavaScript)
日付フォーマットする際に区切り文字を指定できる関数
以下のような、dateオブジェクト
と区切り文字
を引数で渡す関数になっています。
区切り文字の引数sep
はデフォルトで""(空文字)
にしているので
指定しないと、YYYYMMDD
形式(空文字区切り)で返ってきます。
日付フォーマット関数 区切り文字指定可
function formatDate(date, sep="") {
const yyyy = date.getFullYear();
const mm = ('00' + (date.getMonth()+1)).slice(-2);
const dd = ('00' + date.getDate()).slice(-2);
return `${yyyy}${sep}${mm}${sep}${dd}`;
}
以下のように関数を呼び出します。
日付フォーマット関数呼び出し方
const dateTime = new Date();
const date = new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());
// 区切り文字なし
const dateStr = formatDate(date);
console.log(dateStr);
// 20220914
// ハイフン区切り
const dateStrHyphen = formatDate(date, "-");
console.log(dateStrHyphen);
// 2022-09-14
// スラッシュ区切り
const dateStrSlash = formatDate(date, "/");
console.log(dateStrSlash);
// 2022/09/14
アロー関数で1行で書く
アロー関数版
const formatDate = (date, sep="") => date.getFullYear() + sep + ('00' + (date.getMonth()+1)).slice(-2) + sep +('00' + date.getDate()).slice(-2);
アロー関数でも従来の関数の使い方と一緒です。
const formatDate = (date, sep="") => date.getFullYear() + sep + ('00' + (date.getMonth()+1)).slice(-2) + sep +('00' + date.getDate()).slice(-2);
const dateTime = new Date();
const date = new Date(dateTime.getFullYear(), dateTime.getMonth(), dateTime.getDate());
// 区切り文字なし
const dateStr = formatDate(date);
console.log(dateStr);
// 20220914
// ハイフン区切り
const dateStrHyphen = formatDate(date, "-");
console.log(dateStrHyphen);
// 2022-09-14
// スラッシュ区切り
const dateStrSlash = formatDate(date, "/");
console.log(dateStrSlash);
// 2022/09/14