首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Javascript yyyy-mm-dd转换为不正确的日期(mm/dd/yyyy)

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

Stack Overflow用户
提问于 2017-12-15 07:26:41
回答 2查看 383关注 0票数 4

下面是用户输入日期的代码:(对于我来说,它必须是一个日期选择器,但表单必须以文本形式提交日期字段--不要问)

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

附加图片…

我尝试过UTC和时区,但都没有用。

我需要我的输出是一个文本字符串"01/01/2001“,我可以构建,只要我有正确的日期去in..but它似乎计算错误,无论我尝试。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-23 11:07:31

使用jquery datapicker库做到了这一点。

代码语言:javascript
运行
复制
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);
        }
    }
});
票数 0
EN

Stack Overflow用户

发布于 2017-12-15 07:35:10

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

解决这个问题的一种方法是使用getUTCDay而不是getDaymonthyear也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47823658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档