Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字符串在转换为日期()时发生更改_Javascript - Fatal编程技术网

Javascript字符串在转换为日期()时发生更改

Javascript字符串在转换为日期()时发生更改,javascript,Javascript,我遇到了一个非常奇怪的问题 我有两个Javascript字符串变量,它们从两个文本框中获取数据 第三个字符串从表格单元格中拉出。但是,当它转换为Javascript Date()时,其日期会更改。我不知道为什么会这样 我将通过代码进行注释,以帮助解释发生了什么 //get the text from the first textbox (from date) var valueFrom = document.getElementById('selected-submittedDate-from'

我遇到了一个非常奇怪的问题

我有两个Javascript字符串变量,它们从两个文本框中获取数据

第三个字符串从表格单元格中拉出。但是,当它转换为Javascript Date()时,其日期会更改。我不知道为什么会这样

我将通过代码进行注释,以帮助解释发生了什么

//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
;这是明确的。当其他一切都失败时,。:-)创建日期对象的格式为
新日期(年、月、日)
,其中月为零索引(即。