Last active
September 27, 2019 02:20
-
-
Save zlq4863947/216e09c26ae177563bf3a56ef7696546 to your computer and use it in GitHub Desktop.
JavaScript 日付を指定した書式の文字列にフォーマットする
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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