Javascriptでよく使う処理をスニペットにしてみた
日付の整形
// 日付時刻文字列のなかで常に2ケタにしておきたい部分はここで処理
昔からよく使われるテクニックです。
考えられる最大の文字数を頭に追加して、右から必要な桁数を切り出します。
実際には、String()に lpad, rpad メソッドを追加するんでしょうけどね。
javascript
/**
* 日付文字列を整形してYYYY/mm/ddで返す
* @param {string} dateStr Dateがパースできる文字列 例:IEでDateTime型はパースできない
* @param {boolean} isDateTime DateTime方式にするか
* @returns {string} 整形した日時 "2017/01/01 00:00:00"
*/
const convertDateTime = function (dateStr, isDateTime) {
const now = new Date(dateStr);
// 日付時刻文字列のなかで常に2ケタにしておきたい部分はここで処理
// 1~9の数値場合"01"~"09"という文字にする
let [year, month, day, hour, minute, second] = [
// 年を取得
now.getFullYear(),
// 月を取得 0~11で取得されるので実際の月は+1したものとなる
('0' + (now.getMonth() + 1)).slice(-2),
// 日を取得
('0' + now.getDate()).slice(-2),
// 時を取得
('0' + now.getHours()).slice(-2),
// 分を取得
('0' + now.getMinutes()).slice(-2),
// 秒を取得
('0' + now.getSeconds()).slice(-2),
];
let datetime = [year, month, day].join('/');
if(isDateTime)
datetime += ' ' + [hour, minute, second].join(':');
return datetime;
};
// test
[true, false].forEach(function(isDateTime){
console.log('isDateTime', isDateTime);
for(var i = 1; i <= 12; i++){
let dateStr = ['2017', i, i].join('/')
+ ' '
+ [i, i, i].join(':');
console.log('dateStr', dateStr, 'convertDateTime', convertDateTime(dateStr, isDateTime));
}
});
実行結果
isDateTime true
dateStr 2017/1/1 1:1:1 convertDateTime 2017/01/01 01:01:01
dateStr 2017/2/2 2:2:2 convertDateTime 2017/02/02 02:02:02
dateStr 2017/3/3 3:3:3 convertDateTime 2017/03/03 03:03:03
dateStr 2017/4/4 4:4:4 convertDateTime 2017/04/04 04:04:04
dateStr 2017/5/5 5:5:5 convertDateTime 2017/05/05 05:05:05
dateStr 2017/6/6 6:6:6 convertDateTime 2017/06/06 06:06:06
dateStr 2017/7/7 7:7:7 convertDateTime 2017/07/07 07:07:07
dateStr 2017/8/8 8:8:8 convertDateTime 2017/08/08 08:08:08
dateStr 2017/9/9 9:9:9 convertDateTime 2017/09/09 09:09:09
dateStr 2017/10/10 10:10:10 convertDateTime 2017/10/10 10:10:10
dateStr 2017/11/11 11:11:11 convertDateTime 2017/11/11 11:11:11
dateStr 2017/12/12 12:12:12 convertDateTime 2017/12/12 12:12:12
isDateTime false
dateStr 2017/1/1 1:1:1 convertDateTime 2017/01/01
dateStr 2017/2/2 2:2:2 convertDateTime 2017/02/02
dateStr 2017/3/3 3:3:3 convertDateTime 2017/03/03
dateStr 2017/4/4 4:4:4 convertDateTime 2017/04/04
dateStr 2017/5/5 5:5:5 convertDateTime 2017/05/05
dateStr 2017/6/6 6:6:6 convertDateTime 2017/06/06
dateStr 2017/7/7 7:7:7 convertDateTime 2017/07/07
dateStr 2017/8/8 8:8:8 convertDateTime 2017/08/08
dateStr 2017/9/9 9:9:9 convertDateTime 2017/09/09
dateStr 2017/10/10 10:10:10 convertDateTime 2017/10/10
dateStr 2017/11/11 11:11:11 convertDateTime 2017/11/11
dateStr 2017/12/12 12:12:12 convertDateTime 2017/12/12