如何在日期字符串的月份/日期前添加前导零?

4
我写了一个方法,可以输入一个数字并从当前日期里减去指定的月数。
我想知道如何在月份小于10时在前面添加'0'。还有,如何在日期小于10时在前面添加"0"。
目前,当它返回对象(2012-6-9)时,6和9没有前导'0'。 有谁能告诉我如何实现?
以下是我的代码:
lastNmonths = function(n) {
    var date = new Date();

    if (n <= 0)
        return [date.getFullYear(), date.getMonth() + 1 , date.getDate()].join('-');
    var years = Math.floor(n/12); 


   var months = n % 12;


    if (years > 0)
        date.setFullYear(date.getFullYear() - years);

    if (months > 0) {
        if (months >= date.getMonth()) {
            date.setFullYear(date.getFullYear()-1 );
            months = 12 - months; 
            date.setMonth(date.getMonth() + months );
        } else {
            date.setMonth(date.getMonth() - months);
        }
    }

}

    return [date.getFullYear(), date.getMonth() + 1, date.getDate()].join('-');
};

请参考https://dev59.com/z3NA5IYBdhLWcg3wL6yx,了解如何将日期转换为字符串的一些建议。 - Grim
3个回答

14

你也可以使用以下方法避免测试 n < 10:

("0" + (yourDate.getMonth() + 1)).slice(-2)

2

你可以编写一个类似于以下样式的小函数:

function pad(n) {return (n<10 ? '0'+n : n);}

并将月份和日期传递给它。
return [date.getFullYear(),pad(date.getMonth() + 1), pad(date.getDate())].join('-');

0
尝试连接字符串"0":
   month = date.getMonth() + 1 < 10 ? '0' + date.getMonth() + 1 : date.getMonth() + 1
   return [date.getFullYear(), month, date.getDate()].join('-');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接