Skip to content

Instantly share code, notes, and snippets.

@zlq4863947
Last active September 27, 2019 02:20
Show Gist options
  • Save zlq4863947/216e09c26ae177563bf3a56ef7696546 to your computer and use it in GitHub Desktop.
Save zlq4863947/216e09c26ae177563bf3a56ef7696546 to your computer and use it in GitHub Desktop.
JavaScript 日付を指定した書式の文字列にフォーマットする
# JavaScriptの日付オブジェクトを指定した書式でフォーマットする汎用ファンクションを作成します。
日付オブジェクトを文字列に変換していくのではなく、指定したフォーマットの文字列に日付オブジェクトの対象の値を置換していくイメージです。
このやり方なら例えば曜日が必要な場合でも簡単に拡張できます。
// date: 日付オブジェクト
// format: 書式フォーマット
function formatDate (date, format) {
format = format.replace(/yyyy/g, date.getFullYear());
format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
format = format.replace(/dd/g, ('0' + date.getDate()).slice(-2));
format = format.replace(/HH/g, ('0' + date.getHours()).slice(-2));
format = format.replace(/mm/g, ('0' + date.getMinutes()).slice(-2));
format = format.replace(/ss/g, ('0' + date.getSeconds()).slice(-2));
format = format.replace(/SSS/g, ('00' + date.getMilliseconds()).slice(-3));
return format;
};
// 2017年1月2日3時4分5秒6ミリ秒
var date = new Date(2017, 0, 2, 3, 4, 5, 6);
console.log(formatDate(date, 'yyyyMMdd')); // "20170102"
console.log(formatDate(date, 'yyyyMMddHHmmssSSS')); // "20170102030405006"
console.log(formatDate(date, 'yyyy/MM/dd')); // "2017/01/02"
console.log(formatDate(date, 'yyyy-MM-dd')); // "2017-01-02"
console.log(formatDate(date, 'HH:mm')); // "03:04"
console.log(formatDate(date, 'HH:mm:ss:SSS')); // "03:04:05:006"
## 2017/1/2などのように、0埋めが不要な場合は以下ようにします。
function formatDate (date, format) {
format = format.replace(/yyyy/g, date.getFullYear());
format = format.replace(/M/g, (date.getMonth() + 1));
format = format.replace(/d/g, (date.getDate()));
format = format.replace(/H/g, (date.getHours()));
format = format.replace(/m/g, (date.getMinutes()));
format = format.replace(/s/g, (date.getSeconds()));
format = format.replace(/S/g, (date.getMilliseconds()));
return format;
};
// 2017年1月2日3時4分5秒6ミリ秒
var date = new Date(2017, 0, 2, 3, 4, 5, 6);
console.log(formatDate(date, 'yyyy/M/d')); // "2017/1/2"
console.log(formatDate(date, 'yyyy-M-d')); // "2017-1-2"
console.log(formatDate(date, 'H:m')); // "3:4"
console.log(formatDate(date, 'H:m:s:S')); // "3:4:5:6"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment