Javascript日期 - 适用的日期和月份前导0

时间:2011-08-08 08:54:48

标签: javascript date

当日或月小于10时,是否有一种在日或月前添加0的简洁方法:

var myDate = new Date();
var prettyDate =(myDate.getFullYear() +'-'+ myDate.getMonth()) +'-'+ myDate.getDate();

这将输出为:

2011-8-8

我希望它是:

2011-08-08

9 个答案:

答案 0 :(得分:21)

不,没有好办法做到这一点。你不得不求助于:

var myDate = new Date();

var year = myDate.getFullYear();

var month = myDate.getMonth() + 1;
if(month <= 9)
    month = '0'+month;

var day= myDate.getDate();
if(day <= 9)
    day = '0'+day;

var prettyDate = year +'-'+ month +'-'+ day;

答案 1 :(得分:17)

您想要的格式看起来像ISO。因此,请利用toISOString()

var d = new Date();
var date = d.toISOString().slice(0,10); // "2014-05-12"

答案 2 :(得分:4)

var myDate = new Date();
var m = myDate.getMonth() + 1;
var d = myDate.getDate();
m = m > 9 ? m : "0"+m;
d = d > 9 ? d : "0"+d;
var prettyDate =(myDate.getFullYear() +'-'+ m) +'-'+ d;

...和示例:http://jsfiddle.net/gFkaP/

答案 3 :(得分:3)

您必须手动检查是否需要前导零并在必要时添加...

var m = myDate.getMonth();
var d =  myDate.getDate();

if (m < 10) {
    m = '0' + m
}

if (d < 10) {
    d = '0' + d
}

var prettyDate = myDate.getFullYear() +'-'+ m +'-'+ d;

答案 4 :(得分:2)

是的,由Rumata获取String.js,然后使用:

'%04d-%02d-%02d'.sprintf(myDate.getFullYear(),
                         myDate.getMonth() + 1,
                         myDate.getDate());

注意:不要忘记月份字段中的+ 1Date对象的月份字段从零开始,而不是一个!

如果你不想使用额外的库,一个简单的内联函数将完成添加前导零的工作:

function date2str(d) {
    function fix2(n) {
        return (n < 10) ? '0' + n : n;
    }
    return d.getFullYear() + '-' +
           fix2(d.getMonth() + 1) + '-' +
           fix2(d.getDate());
 }

甚至将其添加到Date原型中:

Date.prototype.ISO8601date = function() {
    function fix2(n) {
        return (n < 10) ? '0' + n : n;
    }
    return this.getFullYear() + '-' +
           fix2(this.getMonth() + 1) + '-' +
           fix2(this.getDate());
 }

用法(见http://jsfiddle.net/alnitak/M5S5u/):

 var d = new Date();
 var s = d.ISO8601date();

答案 5 :(得分:0)

不幸的是,javascript中没有内置的日期格式。使用现有的库(例如http://blog.stevenlevithan.com/archives/date-time-format)或构建自己的方法来添加前导零。

var addLeadingZeroIfNeeded = function addLeadingZeroIfNeeded(dateNumber) {
        if (String(dateNumber).length === 1) {
            return '0' + String(dateNumber);
        }

        return String(dateNumber);
    },
    myDate = new Date(),
    prettyDate;

prettyDate = myDate.getFullYear() + '-' + addLeadingZeroIfNeeded(myDate.getMonth()) + '-' + addLeadingZeroIfNeeded(myDate.getDate());

修改

正如Alnitak所说,请记住那个月我的JavaScript从0开始而不是1。

答案 6 :(得分:0)

最简单的方法是预先添加zero,然后使用.slice(-2)。 使用此功能,您始终返回string的最后2个字符。

var month = 8;

var monthWithLeadingZeros = ('0' + month).slice(-2);

结帐此示例: http://codepen.io/Shven/pen/vLgQMQ?editors=101

答案 7 :(得分:0)

月份, var month = ("0" + (myDate.getMonth() + 1)).slice(-2);

白天, var day = ("0" + (myDate.getDate() + 1)).slice(-2);

答案 8 :(得分:0)

您可以尝试这样

一天:

("0" + new Date().getDate()).slice(-2)

一个月:

("0" + (new Date().getMonth() + 1)).slice(-2)

年份:

new Date().getFullYear();