LoginSignup
0
1

More than 5 years have passed since last update.

javascript - 勝手に添削 - 任意の文字数にゼロ埋めをする

Last updated at Posted at 2017-04-06

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
0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1