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=].
我有一个日期,我正在将其转换为 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=].