Javascript字符串在转换为日期()时发生更改
我遇到了一个非常奇怪的问题 我有两个Javascript字符串变量,它们从两个文本框中获取数据 第三个字符串从表格单元格中拉出。但是,当它转换为Javascript Date()时,其日期会更改。我不知道为什么会这样 我将通过代码进行注释,以帮助解释发生了什么Javascript字符串在转换为日期()时发生更改,javascript,Javascript,我遇到了一个非常奇怪的问题 我有两个Javascript字符串变量,它们从两个文本框中获取数据 第三个字符串从表格单元格中拉出。但是,当它转换为Javascript Date()时,其日期会更改。我不知道为什么会这样 我将通过代码进行注释,以帮助解释发生了什么 //get the text from the first textbox (from date) var valueFrom = document.getElementById('selected-submittedDate-from'
//get the text from the first textbox (from date)
var valueFrom = document.getElementById('selected-submittedDate-from').value;
//convert the string into the right format
var formatDateString = function (unformatted) {
var parts = unformatted.split('-');
return parts[1] + '/' + parts[2] + '/' + parts[0];
};
var formattedDateFrom = formatDateString(valueFrom);
//get the text from the second textbox (to date)
//convert the string into the right format
var valueTo = document.getElementById('selected-submittedDate-to').value;
var formatDateStringTo = function (unformatted) {
var parts = unformatted.split('-');
return parts[1] + '/' + parts[2] + '/' + parts[0];
};
var formattedDateTo = formatDateStringTo(valueTo);
//just make some new variables and set the formatted dates to them
// date from, date to
var dateFrom = formattedDateFrom;
var dateTo = formattedDateTo;
//get the table row, then get the table cell,
var TableRow = document.getElementById("applicant_data");
var TableCells = TableRow.getElementsByTagName("td");
// get the table cell[6] which is the date
var check = TableCells[6].innerText;
//convert it to a string (i think it is anyways?)
var dateCheck = check.toString();
// remove the slashes in the strings
var d1 = dateFrom.split("/");
var d2 = dateTo.split("/");
var c = dateCheck.split("/");
//log for testing
console.log(d1);
console.log(d2);
console.log(c);
//convert the strings into dates and set them as a new variable
var from = new Date(d1[2], d1[1]-1, d1[0]);
var to = new Date(d2[2], d2[1]-1, d2[0]);
var check1 = new Date(c[2], c[1]-1, c[0]);
//log them out again
console.log(from);
console.log(to);
console.log(check1);
问题在于我的输出,看看这个:
["03", "04", "2014"]
["03", "05", "2014"]
["08", "19", "2013"]
Thu Apr 03 2014 00:00:00 GMT-0400 (Eastern Daylight Time)
Sat May 03 2014 00:00:00 GMT-0400 (Eastern Daylight Time)
//this date below should be August 19 2013......
Tue Jul 08 2014 00:00:00 GMT-0400 (Eastern Daylight Time)
这是怎么发生的?!???!?第三个日期确实在变化。19被转换为一个月而不是8个月,从外观上看,它做了一个模运算。19%12=7减去:19-12=7。你可能想重新安排你的约会,否则前两次也是一样。换句话说,在
新日期
通话中交换月和日
更多详细信息+(纠正先前错误):
var check1=新日期(c[2],c[1]-1,c[0])代码>
在上面的代码中,您需要做的是交换最后两个,以便:
var check1=新日期(c[2],c[0]-1,c[1])代码>
该函数希望您先给出年份,然后给出月份和日期。19被转换为月份而不是8,从外观上看,它执行模运算。19%12=7减去:19-12=7。你可能想重新安排你的约会,否则前两次也是一样。换句话说,在新日期
通话中交换月和日
更多详细信息+(纠正先前错误):
var check1=新日期(c[2],c[1]-1,c[0])代码>
在上面的代码中,您需要做的是交换最后两个,以便:
var check1=新日期(c[2],c[0]-1,c[1])代码>
该函数希望您先给出年份,然后给出月份和日期。19被转换为月份而不是8,从外观上看,它执行模运算。19%12=7减去:19-12=7。你可能想重新安排你的约会,否则前两次也是一样。换句话说,在新日期
通话中交换月和日
更多详细信息+(纠正先前错误):
var check1=新日期(c[2],c[1]-1,c[0])代码>
在上面的代码中,您需要做的是交换最后两个,以便:
var check1=新日期(c[2],c[0]-1,c[1])代码>
该函数希望您先给出年份,然后给出月份和日期。19被转换为月份而不是8,从外观上看,它执行模运算。19%12=7减去:19-12=7。你可能想重新安排你的约会,否则前两次也是一样。换句话说,在新日期
通话中交换月和日
更多详细信息+(纠正先前错误):
var check1=新日期(c[2],c[1]-1,c[0])代码>
在上面的代码中,您需要做的是交换最后两个,以便:
var check1=新日期(c[2],c[0]-1,c[1])代码>
函数希望您先给出年份,然后给出月份和日期。我理解您的意思,但不知道如何修复它。你能帮我吗?我试着更改创建日期的值,并将年份更改为2086,但我不确定正确的方法是什么。仅供参考,不是模,而是减法。可以将其视为一年中滚动的月数。24将作为次年的12月结束(24-12=12个月12,不是0)。我理解你的意思,但我不确定如何修复它。你能帮我吗?我试着更改创建日期的值,并将年份更改为2086,但我不确定正确的方法是什么。仅供参考,不是模,而是减法。可以将其视为一年中滚动的月数。24将作为次年的12月结束(24-12=12个月12,不是0)。我理解你的意思,但我不确定如何修复它。你能帮我吗?我试着更改创建日期的值,并将年份更改为2086,但我不确定正确的方法是什么。仅供参考,不是模,而是减法。可以将其视为一年中滚动的月数。24将作为次年的12月结束(24-12=12个月12,不是0)。我理解你的意思,但我不确定如何修复它。你能帮我吗?我试着更改创建日期的值,并将年份更改为2086,但我不确定正确的方法是什么。仅供参考,不是模,而是减法。可以将其视为一年中滚动的月数。24将结束为下一年的12月(24-12=12个月12,而不是0)。如果您可以帮助,请使用YYYY-MM-DD
;这是明确的。当其他一切都失败时,。:-)创建日期对象的格式是新日期(年、月、日)
,其中月的索引为零(即0==一月,11==十二月)。OP使用的是年、日、月
。使用新日期(s[2]、--s[0]、s[1])
。哦,转换的日期都不正确。e、 g.美国格式的2014年3月4日是3月4日,而不是4月3日;2014年3月5日是3月5日,而不是5月3日。如果您能提供帮助,请使用YYYY-MM-DD
;这是明确的。当其他一切都失败时,。:-)创建日期对象的格式是新日期(年、月、日)
,其中月的索引为零(即0==一月,11==十二月)。OP使用的是年、日、月
。使用新日期(s[2]、--s[0]、s[1])
。哦,转换的日期都不正确。e、 g.美国格式的2014年3月4日是3月4日,而不是4月3日;2014年3月5日是3月5日,而不是5月3日。如果您能提供帮助,请使用YYYY-MM-DD
;这是明确的。当其他一切都失败时,。:-)创建日期对象的格式为新日期(年、月、日)
,其中月为零索引(即。