起初这可能看起来像许多其他已经在JavaScript中提到的关于NaN的问题,但我向你保证不是.
我有这段代码转换从文本框中获取值,并在单击表单中的按钮后将其转换为日期:
var dateString = $('#itemAcquiredTxt').val(); //Would have a value of '2013-12-15'
var dateAcquired = new Date(dateString); //Invalid Date ?
Run Code Online (Sandbox Code Playgroud)
文本框itemAcquiredTxt将具有从数据库调用中获取的值"2013-12-15"(YYYY-MM-DD格式):
$('#itemAcquiredTxt').val(new Date(item.DateAcquired).toLocaleDateString());
Run Code Online (Sandbox Code Playgroud)
创建新的Date对象后,它会给我"无效日期".
好的...所以我想通过将年,月和日作为数字 - 其他构造函数之一传递来创建Date对象.
var year = Number(dateString.split("-")[0]); //Returns NaN
var month = Number(dateString.split("-")[1]); //Returns NaN
var day = Number(dateString.split("-")[2]); //Returns NaN
var dateAcquired = new Date(year, month - 1, day); //InvalidDate
Run Code Online (Sandbox Code Playgroud)
我尝试用破折号分割日期文本框中的字符串,并使用Number和parseInt将字符串转换为数字 - 但两者都给了我一个NaN.我仔细检查了字符串值,似乎没有错:分别在分割项目上"2013","12","15".
我对自己说......也许我的代码是坏的,试了一下的jsfiddle
https://jsfiddle.net/jrxg40js/
但正如你可以看到有放置一个日期文本,按下按钮后,它的工作原理!
下面是相关的HTML代码
<table id="inputTable">
<tr>
<td><span><strong>Name:</strong></span></td>
<td><input id="itemNameTxt" type="text" value="" /></td>
</tr>
<tr>
<td><span><strong>Category:</strong></span></td>
<td>
<select id="categorySelect" ng-model="selectedCategory" ng-change="changeSubCategoryList(selectedCategory)" ng-options="cat …Run Code Online (Sandbox Code Playgroud)