将日期d-m-yyyy格式化为前导零

时间:2016-11-25 15:00:45

标签: javascript jquery date

您好我有一个关于格式化日期的问题,如果日期没有前导零,则日期和月份具有前导零,例如:1-1-2017。

现在我尝试在Stackoverflow上根据不同的答案编写一些代码,但没有成功。

这是我的代码:

var input_date = "1-1-2017";
var input_date2 = "22-11-2017";

var myDate = new Date(input_date);
var prettyDate =
    ( '0' + (myDate.getDate()) ).slice( -2 ) + '-' + 
    ( '0' + (myDate.getMonth()+1) ).slice( -2 ) + '-' +
    myDate.getFullYear();


document.write( prettyDate );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

这适用于日期:1-1-2017,但只要变量input_date2用作Date参数,格式就会出错。

我正在寻找一种机制,如果缺少前导零,则可以格式化我的日期。任何帮助都会很感激。

PS。实际上,我想知道用jQuery这不是更容易,而不是像我上面那样使用普通的Javascript吗?

2 个答案:

答案 0 :(得分:2)

问题是日期字符串的格式。 by使用以下格式:Date()。如果您更改MM-DD-YYYY以使用此格式,那么它可以正常工作。

&#13;
&#13;
input_date2
&#13;
var input_date = "1-1-2017";
var input_date2 = "11-22-2017";

var myDate = new Date(input_date2);
var prettyDate =
    ( '0' + (myDate.getDate()) ).slice( -2 ) + '-' + 
    ( '0' + (myDate.getMonth()+1) ).slice( -2 ) + '-' +
    myDate.getFullYear();


document.write( prettyDate );
&#13;
&#13;
&#13;

答案 1 :(得分:-2)

此功能“过滤”这些值并仅在日/月为&lt; 0时添加'0'。 10(例如5到05)还有很大的改进空间......对不起,第一个根本没用。

function fixDateFormat(input_date){
        let myDate = new Date(input_date);
        //document.write(myDate + " ----------- ")
        let myDay = myDate.getDate();
        //document.write("Day: " + myDay + "| ");
        let myMonth = myDate.getMonth() + 1;
        //document.write("Month: " + myMonth + "  ::::  ");
        myDay = (myDay < 10) ? ("0" + myDay) : myDay;
        myMonth = (myMonth < 10) ? ("0" + myMonth) : myMonth;
        return myDay + "-" + myMonth + "-" + myDate.getFullYear();
    }


    var input_date = "1-1-2017";
    var input_date2 = "22-11-2017";

    var prettyDate = fixDateFormat(input_date);

    document.write(prettyDate);

我测试它,现在它返回你想要的dd-mm-yyyy格式。