JS のフォーマットを整形する
現在の時刻を取得する
// 時間のObject
var date = new Date();
// 年を取得する
var year = date.getFullYear();
// 月を取得する(JavaScriptの世界に月は0から換算されるので +1が必要)
var month = date.getMonth() + 1;
// 日を取得する
var day = date.getDate();
// 時を取得する
var hour = date.getHours();
// 分を取得する
var minute = date.getMinutes();
// 秒を取得する
var second = date.getSeconds();
// ミリ秒を取得する
var millisecond = date.getMilliseconds();
ここまで、時間を取得するコードをまとめました。
これだけで、フォーマットを整形するができないので、メソッドを用意してもよいでしょう
function formatDate(date, format) {
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
var millisecond = date.getMilliseconds();
return format
.replace('YYYY', year)
.replace('MM', month)
.replace('DD', day)
.replace('hh', hour)
.replace('mm', minute)
.replace('ss', second)
.replace('ms', millisecond);
}
引数のformatは任意のフォーマットを渡して、String.prototype.replaceで変換を行う
実行してみよう
var d = new Date();
console.log(formatDate(d, 'YYYY-MM-DD hh:mm:ss'));
2024-7-15 12:14:18 のように出力される
ちょっと問題があるようですね、月のデータは一桁足りないよね、どうする????
String.prototype.padStart()メソッドを利用して、補填してもよいでしょう
ただ、取得してきた時間の型は全部intなので、Stringに変換する必要があり、コードの最終は以下になります。
function formatDate(date, format) {
var year = date.getFullYear().toString().padStart(4, '0');
var month = (date.getMonth() + 1).toString().padStart(2, '0');
var day = date.getDate().toString().padStart(2, '0');
var hour = date.getHours().toString().padStart(2, '0');
var minute = date.getMinutes().toString().padStart(2, '0');
var second = date.getSeconds().toString().padStart(2, '0');
var millisecond = date.getMilliseconds();
return format
.replace('YYYY', year)
.replace('MM', month)
.replace('DD', day)
.replace('hh', hour)
.replace('mm', minute)
.replace('ss', second)
.replace('ms', millisecond);
}
var d = new Date();
console.log(formatDate(d, 'YYYY-MM-DD hh:mm:ss'));
2024-07-15 12:43:02のように出力される
以上、また次回.....