メニュー
検索
言語
タグ
Dateオブジェクトを書式の文字列に変換する関数 (formatDate)
総合評価: - 作成日: 2025-11-12
コメント:
Braveブラウザで動作確認済み。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>formatDate</title>
<script>
/**
* Dateオブジェクトdateを書式fmtの文字列にする。
*
* 書式に使える文字は以下の通り。
*
* %Y ... 年
* %m ... 月
* %d ... 日
* %H ... 時
* %M ... 分
* %S ... 秒
* %a ... 曜日(日本語)
*
* fmt ... 書式文字列
* date ... Dateオブジェクト
* 返り値 ... 生成された文字列
*/
function formatDate (fmt, date) {
const week = ['日', '月', '火', '水', '木', '金', '土'];
let s = ''
function pad (n) {
if (n < 10) {
return '0' + n
} else {
return '' + n
}
}
for (let i = 0; i < fmt.length; i++) {
let c = fmt[i]
switch (c) {
default:
s += c
break
case '%':
i++
if (i < fmt.length) {
c = fmt[i]
switch (c) {
default: s += c; break
case 'Y': s += pad(date.getFullYear()); break
case 'm': s += pad((date.getMonth() + 1)); break
case 'd': s += pad(date.getDate()); break
case 'H': s += pad(date.getHours()); break
case 'M': s += pad(date.getMinutes()); break
case 'S': s += pad(date.getSeconds()); break
case 'a': s += week[date.getDay()]; break
}
}
break
}
}
return s
}
document.addEventListener('DOMContentLoaded', () => {
let s
s = formatDate('%Y-%m-%d (%a) %H:%M:%S', new Date())
console.log(s)
console.assert(s.match(/^[0-9]+-[0-9]+-[0-9]+ \(.\) [0-9]+:[0-9]+:[0-9]+$/))
s = formatDate('%H:%M:%S (%a) %Y-%m-%d', new Date())
console.log(s)
console.assert(s.match(/^[0-9]+:[0-9]+:[0-9]+ \(.\) [0-9]+-[0-9]+-[0-9]+$/))
s = formatDate('%% %o', new Date())
console.log(s)
console.assert(s === '% o')
})
</script>
</head>
<body>
</body>
</html>