我正在尝试将两个字符串转换为日期,但我得到一个明显日期字符串的NaN
。
有谁能告诉我为什么会这样?
代码:
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"
答案 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
无效日期
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;
答案 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的帮助!!!