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