parseInt 无法处理从 Angularjs 控制器中的吐出日期创建的数组中的数据

parseInt not working with data from an Array created from a spitted Date inside Angularjs controller

我有一个日期,我正在将其转换为 LocaleDateString,然后将其拆分为 angulrajs 控制器内的一个数组。当我尝试将数组中的元素转换为 int 时,我得到了 NaN。数组中的字符是数字,但解析不起作用。

如何正确解析该数据?

代码:

var dateLocal = $scope.startDate.toLocaleDateString(); //Has this ‎6‎/‎5‎/‎2015
var dateSplitted = dateLocal.split("/"); //Has [6,5,2015]
var month = parseInt(dateSplitted[0]);  //HERE If I use parseIntI get NaN originally it has 6
var day = dateSplitted[1];//Has 5
var year = dateSplitted[2]; Has 2015

我想轻松转换为字符串年月日。

您依赖 toLocaleDateString,它依赖于实现:

This function returns a String value. The contents of the String are implementation-dependent

问题是您的浏览器 returns 一个带有一些 left-to-right marks (U+200E).

的字符串

看区别:

var str1 = "6", // "\u0036"             <-- OK
    str2 = "‎6‎"; // "\u200e\u0036\u200e" <-- Your "corrupted" string
parseInt(str1); // 6
parseInt(str2); // NaN

所以您不应该相信该方法返回的值。相反,使用日期方法来获取日、月和年。

我试过你的代码,它对我来说似乎工作得很好。对于您的 dateLocal,我只是用 var dateLocal = new Date().toLocaleDateString(); 替换了您的值,因为我不知道从您的范围加载了什么值。当我这样做时,代码加载正常,因此您可能需要仔细检查从范围加载的变量的性质。

这并没有回答你为什么在你的代码中得到 NaN ,而是将日期对象转换为字符串并解析部分,你可以直接使用 [= 获取日期的部分14=].