Javascript 如何在jquery中将字符串转换为日期字段

Javascript 如何在jquery中将字符串转换为日期字段,javascript,jquery,datetime,Javascript,Jquery,Datetime,我有以下代码: //var data is an array of objects var dateRegex = /(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})/; var dataDateFields = []; $.each(data[0], function (name, value) { if (jQuery.type(value) === "string") { if (value.match(dateRe

我有以下代码:

//var data is an array of objects
var dateRegex = /(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})/;
var dataDateFields = [];
$.each(data[0], function (name, value) {
    if (jQuery.type(value) === "string") {
        if (value.match(dateRegex)) {
            dataDateFields.push(name);
        }
    }
});
if (dataDateFields.length > 0) {
    $.each(data, function (e) {
        $.each(this, function(name, value) {
            if (jQuery.inArray(name, dataDateFields) !== -1) {
                var tempDate = new Date(value);
                this.value = tempDate;
            }
        });
    });
}
这段代码的作用是将数据传递给它,它是数据库中一个表中的一个对象数组。然后,它搜索第一个对象的字段,并获取其中包含看起来像datetime字段的数据的列的名称。它将这些字段的名称保存在数组中。然后,它遍历数据中的每一行,以及具有datetime字段名的每一列,将该数据从字符串转换为日期类型

我遇到的问题是代码的最后一部分。代码位:

if (jQuery.inArray(name, dataDateFields) !== -1) {
            var tempDate = new Date(value);
            this.value = tempDate;
        }
代码进入if语句后,将使用所提供字符串中的日期变量正确填充tempDate。我会这样想

this.value = tempDate;
然后将用新日期覆盖以前存储的日期时间字符串。但事实并非如此。当我在所有数据循环之后查看这些数据时,包含日期时间字符串的字段仍然是相同的,它没有用转换后的日期数据填充这些字段。ps.选中时,tempDate始终正确转换为日期类型并采用正确的格式

有人知道我怎样才能做到这一点吗?还有,有没有更简单的方法来做我正在做的事情?这段代码的工作假设是,我不知道将传递给我什么数据,或者它将包含什么字段-我只知道它可能包含字符串格式的datetime字段,因此,为了以后进行计算,我需要检查每个字段,看它是否像日期,然后将具有该字段名称的所有字符串转换为日期类型。

算出:

$.each(data[0], function (name, value) {
    if (jQuery.type(value) === "string") {
        if (value.match(dateRegex)) {
            dataDateFields.push(name);
        }
    }
});
if (dataDateFields.length > 0) {
    for (var i = 0; i < data.length; i++) {
        $.each(data[i], function (name, value) {
            if (jQuery.inArray(name, dataDateFields) !== -1) {
                var date = value.split("T");
                date = date[0];
                date = date.split("-");
                var year = date[0];
                var month = date[1];
                var day = date[2];
                var tempDate = new Date(year, month, day);
                eval("data[i]."+name+" = tempDate;");
            }
        });
    }
}
$。每个(数据[0],函数(名称,值){
if(jQuery.type(value)=“string”){
if(value.match(dateRegex)){
dataDateFields.push(名称);
}
}
});
如果(dataDateFields.length>0){
对于(变量i=0;i

需要for循环而不是foreach。

JavaScript日期是。。。不理想。考虑使用一个像可能的副本一样的库,你为什么使用<代码>?我应该使用什么?
$(this).val(value)