为什么我的第一个日期解析得到NaN?

时间:2016-08-03 08:29:11

标签: javascript date

我正在尝试将两个字符串转换为日期,但我得到一个明显日期字符串的NaN

有谁能告诉我为什么会这样?

This is where I get the NaN "error"

代码:

function SortMaster() {
        return function (a, b) {
            var aValue = a, bValue = b, aLength = a.length, bLength = b.length;

            var aType = Object.prototype.toString.call(aValue);
            var bType = Object.prototype.toString.call(bValue);

            var aasd = Date.parse(aValue);
            var basd = Date.parse(bValue);

            var aDate = (new Date(Date.parse(aValue))).toISOString().slice(0, 10).replace(/-/g, "");
            var bDate = (new Date(Date.parse(bValue))).toISOString().slice(0, 10).replace(/-/g, "");


            var highestValue = Math.max(aLength, bLength);

            for (var i = 0; i < highestValue; i++) {

            }
        };
    }

a的值是日期字符串"21.10.2014 14:52:24"
b的值也是日期字符串"04.04.2014 15:04:36"

2 个答案:

答案 0 :(得分:2)

问题是 a 采用dd.mm.yyyy格式,似乎这是javascript无法识别为期望mm.dd.yyyy格式的日期,所以它提出错误是因为 21 不是这样的月份,但是对于 b ,错误已经过去,因为那天 04 小于 12 因此它将其视为月份而实际上是一天,因此您的格式应该不< / em> be dd.mm.yyyy

要演示它,请检查此jsFiddle

您看到a2与mm.dd.yyyy中a1的日期相同,但它适用于a2,但a1无效日期

&#13;
&#13;
var a1 = '21.10.2014 14:52:24',
  a2 = '10.21.2014 14:52:24',
  b = '04.04.2014 15:04:36';

var dateA1 = new Date(Date.parse(a1)),
  dateA2 = new Date(Date.parse(a2)),
  dateB = new Date(Date.parse(b));

console.log('a1:' + dateA1); // error, Invalid Date
console.log('a2:' + dateA2);
console.log('b:' + dateB);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

问题是输入字符串的日期格式不正确......

我现在已经创建了一个函数来从日期字符串中创建正确的格式。

function editDateString(dateString){
    var dateStringSplits = dateString.split(' ');
    var firstPart = dateStringSplits[0];
    var secondPart = dateStringSplits[1];

    var Year = firstPart.split(".")[2];
    var Month = firstPart.split(".")[1];
    var Day = firstPart.split(".")[0];

    var Hour = secondPart.split(":")[0];
    var Minute = secondPart.split(":")[1];
    var Second = secondPart.split(":")[2];

    return newDateString = Year + "-" + Month + "-" + Day + " " + Hour + ":" + Minute + ":" + Second;
}

感谢Mi-Creativity的帮助!!!