Jquery将日期格式从8601更改为美国标准

时间:2013-07-05 14:25:21

标签: jquery jquery-ui

我有JSFiddle的代码。

$(function() {
    var datefields = $("input[type='date']");
    // Log starting markup
    datefields.each(function() {
        var $el = $(this), $parent = $el.parent();
        $parent.next().text($parent.html());

    });

    if (!Modernizr.inputtypes.date) {
        datefields    
            .datepicker()
            .each(function() {
                // Turn ISO 8601 date string into US date string
                var dateParts = this.value.split("-"),
                    date = $.map(dateParts, function (el) {
                        return !isNaN(parseInt(el, 10)) ? el : null;
                    }).length === 3
                        ? new Date(dateParts[0], dateParts[1], dateParts[2])
                        : null;
                this.type = "text";
                this.value = !date ? "" :
                    date.getMonth() + "/" +
                    date.getDate() + "/" +
                    date.getFullYear();
            });
    }

    // Log final results
    datefields.each(function() {
        var $el = $(this), $parent = $el.parent();
        $parent.next().next().text($el.val())
        $parent.next().next().next().text($el.attr("value"));
        $parent.next().next().next().next().text($el.prop("value"));
        $parent.next().next().next().next().next().text(this.getAttribute("value"));
    });
});

我无法弄清楚如何将日期正确转换为MM / dd / yyyy格式。截止日期为2012-12-28,它为非html5日期和进行的日期2013年3月28日。它适用于html5浏览器。如果我使用正确格式的日期字符串替换date.getmonth()... etc,它会正确显示。所以我知道它与值getMonth()和getFullYear()有关。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

JavaScript中的

getMonth()从零开始。创建它时,您需要将值减1:

    ? new Date(dateParts[0], parseInt(dateParts[1]) - 1, dateParts[2])

然后将值加1再次显示:

            this.value = !date ? "" :
                (date.getMonth() + 1) + "/" +
                date.getDate() + "/" +
                date.getFullYear();

有关Mozilla开发网络上的getMonth(),请参阅this article