Javascript yyyy-mm-dd转换为不正确的日期(mm/dd/yyyy)

Javascript yyyy-mm-dd转换为不正确的日期(mm/dd/yyyy),javascript,Javascript,以下是用户输入日期的代码:(必须是我这边的日期选择器,但表单必须以文本形式提交日期字段–不要问) 提交时,我调用javascript中的验证逻辑。我附上了一个截图,显示了当我尝试输入2001年1月1日作为用户生日时的样子。看起来,当我将值字符串转换为日期对象时,它转换为错误的日期和时间。如果转换正确,我可以调整月份、日期和年份,并构建一个字符串以发送第二个对象 附加图片 我把UTC和时区弄得一团糟,但都没用 我需要我的输出是一个文本字符串“01/01/2001”,我可以建立,只要我有正确的日期

以下是用户输入日期的代码:(必须是我这边的日期选择器,但表单必须以文本形式提交日期字段–不要问)

提交时,我调用javascript中的验证逻辑。我附上了一个截图,显示了当我尝试输入2001年1月1日作为用户生日时的样子。看起来,当我将值字符串转换为日期对象时,它转换为错误的日期和时间。如果转换正确,我可以调整月份、日期和年份,并构建一个字符串以发送第二个对象

附加图片

我把UTC和时区弄得一团糟,但都没用

我需要我的输出是一个文本字符串“01/01/2001”,我可以建立,只要我有正确的日期进入..但它似乎计算错误,无论我尝试什么


构造日期时,假定字符串表示UTC时间,因为未提供时区。字符串解析为UTC,但日期对象使用浏览器的本地时区


解决这个问题的一种方法是使用而不是
getDay
。这同样适用于和。

使用jquery数据采集器库实现了这一点

function initDatePickers() {
jQuery('.om-datepicker-trigger').click(function () {
    var defaultDatePickerOptions = {
        showOtherMonths: true,
        changeMonth: true,
        changeYear: true,
        defaultDate: '-45y',
        dateFormat: 'mm/dd/yy',
        beforeShow: function (input, inst) {
            var widget = jQuery(inst).datepicker('widget');
            widget.css('margin-left', jQuery(input).outerWidth() + 3 - 
widget.outerWidth());
        },
        //buttonImage: "/img/button_calendar.png",
        //buttonImageOnly: true,
        showOn: "both"
    };

    var $input = jQuery(this).parent().find('.om-input-date').first();

    if ($input.hasClass('om-min-date-today')) {
        var minDateTodayOptions = defaultDatePickerOptions;
        minDateTodayOptions.defaultDate = 0;
        minDateTodayOptions.minDate = 0;
        $input.datepicker(minDateTodayOptions);
        $input.datepicker('show');
    } else {
        $input.datepicker(defaultDatePickerOptions);
        $input.datepicker('show');
    }
});

jQuery('.om-input-date').click(function () {
    jQuery(this).next('.om-datepicker-trigger').trigger('click');
});


// Datepicker
// --------------------------------------------------------
jQuery('.om-input-date').keyup(function () {
    var inputDOBBox = jQuery(this);
    var dateValue = inputDOBBox.attr('value');
    if (dateValue.length == 3 || dateValue.length == 6) {
        var first = dateValue.substring(0, dateValue.length - 1);
        var last = dateValue.substring(dateValue.length - 1);
        if (last != "/" && last != "-") {
            inputDOBBox.attr('value', first + "/" + last);
        }
    }
});