2016-08-03 49 views
-2

我想将两个字符串转换为日期,但我得到一个明显的日期字符串NaN为什么我会为我的第一个日期分析获得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"

+1

sure,always downvote ... – Snickbrack

+3

[**如何创建一个最小,完整和可验证的示例**](http://stackoverflow.com/help/mcve) –

+0

请将代码添加到问题中文本,最好是一个可执行的代码片段。 – JJJ

回答

2

的问题是, a是DD.MM.YYYY格式,好像这不是识别为通过JavaScript代码在预期的MM.DD.YYYY格式日期,所以它抛出一个错误,因为有没有这样每月21,但b通过,因为这一天是04误差小于12所以它认为这是一个月,而实际上它的日子,让你的格式应是DD.MM.YYYY

证明它检查这个jsFiddle

你看到a2是相同的日期作为a1只是MM.DD.YYYY和它的工作对a2a1无效日期

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);

+0

谢谢,由于您的帮助,我创建了一个将日期转换为可用格式的函数。看看我的答案。 – Snickbrack

+0

欢迎你,我很高兴它有帮助,享受编码! –

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的帮助!

+1

mm/dd/yyyy也是非标准的。如果您正在使用自己的功能,至少应返回标准的yyyy-mm-dd格式以保证兼容性。 – JJJ

+0

好的,也谢谢你的帮助。我会适应它;) – Snickbrack

相关问题