2016-08-16 22 views
1

私はラインでエラー "期待される番号" を取得しています:。"予想される数")/ toISOString()

new Date($('#itemOpenDate').val()).toISOString(); 

$( '#itemOpenDate') .val()は日付を表す文字列です。 "8/11/2016"、(IE 11のみ)(Chrome、Firefox、Safariでは正常にテストされています)

#itemOpenDateがどのように設定されるかを絞り込んだ。下記のコードを参照してください。私はエラーを取得:

('#itemOpenDate').val(new Date("8/2/2016").toLocaleString()); 

が、以下では(でもIE 11に)正常に動作します:もちろん

$('#itemOpenDate').val(new Date("8/2/2016").toDateString()); 

、私は.toLocaleStringが提供するフォーマットをしたいです。何か案は?

再現するコード:

$('#itemOpenDate').val()は、例えば、日付を表す文字列である
<!doctype html> 
<html> 
<head> 
<title></title> 
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" > 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
<script src="https://code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script> 
</head> 
<body> 
<div class="container" role="main"> 
    <form class="center-block form-horizontal"> 
     <div class="form-group"> 
      <label for="itemOpenDate" class="control-label">Open Date:</label> 
      <input type="text" class="form-control input-lg" id="itemOpenDate"> 
     </div> 

     <div class="form-group"> 
      <button id="updateItemButton" title="Update Item" type="button" class="btn btn-primary btn-lg btn-block">Update</button> 
     </div> 
    </form> 
</div> 

<script type="text/javascript"> 

$(document).ready(function() { 

$("#itemOpenDate").datepicker(); 

getPunchlistItem(); 

$("#updateItemButton").click(function() { 
    updatePunchlistItem(); 
}); 
}); 

function getPunchlistItem(myPLItemID) { 
$('#itemOpenDate').val(new Date("8/2/2016").toLocaleString()); // error 
$('#itemOpenDate').val(new Date("8/2/2016").toDateString()); // no error 
} 

function updatePunchlistItem() { 
var myOpenDate = new Date($('#itemOpenDate').val()).toISOString(); 
console.log(myOpenDate); 
} 
</script> 
</body> 
</html> 

答えて

0

"8/11/2016"

問題があります。 JavaScriptのDateコンストラクタは、(ES2015仕様の)ISO-8601のサブセット(ES5仕様では、かなりの部分集合ではないミスを犯していました)であるthe date/time format以外のものをサポートする必要はありません、例えば2016-08-11。あなたが何か他のものを解析するように頼むと、あなたは未定義の振る舞いにさまよっています。目的の文字列を解析する必要があります(独自のコードで、またはMomentJSのようなライブラリで)。

+0

それが理由_'Invalid Date'_のですか? – Rayon

+1

@レイヨン:おそらく、それは理解していない文字列に直面したときにIE11が何をするかによって決まります。無効な日付(例えば、 'new Date(NaN)'に相当)を作成することができます。この場合、 'getHours'などはすべてNaNを返します。 –

1

私もこの問題を別の方法で見ました。

var date = new Date('2017-07-02 00:00:00Z').toISOString();

これはクロムではなく、IE11で動作します。日付と時刻の間にTを追加すると、IE11で問題が解決され、Chromeで引き続き動作します。

var date = new Date('2017-07-02T00:00:00Z').toISOString();

http://plnkr.co/edit/8WAhslAphwR3BHxnq3bE?p=preview

関連する問題