2016-08-03 42 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

相關問題