2017-05-24 7 views
-1

ノードサーバーに要求を送信しようとしています。ブラウザは日付をmm/dd/yyyy形式で送信します。これは、サーバーによって次のように処理されます。Node.jsで文字列を分割できません

var endDate; 
    if (req.query.endDate) { 
     endDate = new Date(req.query.endDate); 
    } 

クロムとIE以外のブラウザではうまくこの作品。

IE11では、何らかの理由で'11 5/24/2017 'から'?5?/?24?/?2017 'に日付をエンコードします。 は、私がこれを行うにしようとしていますこの問題を解決するには、次の

var endDate; 
    if (req.query.endDate) { 
     endDate=req.query.endDate.toString().trim(); 
     endDate=endDate.toString().split('?').join(''); 
     console.log('Log',endDate); 
     endDate = new Date(endDate); 
    } 

期待される結果は、「2017年5月24日」です。しかし、それは動作しません。

ログに '?5?/?24?/?2017'の分割( '?')が表示されたら、結果として['?5?/?24?/?2017']が表示されます。なぜそれは文字列を分割していないのですか?

何か間違っていますか? ノードのバージョン:4.3.2(NVMを使用して)あなたの場合は Code

Error

Code

+0

あなたの質問が明確ではありません。タイトルにはnodeJSが書かれていますが、フロントエンドのjavascriptコードはchromeで動作していて、IE11は失敗しています。あれは正しいですか? – itsundefined

+0

これは、サーバー側ではなくブラウザ側からの問題のように聞こえます。おそらく、node.jsアプリケーションではなく、アプリケーションにリクエストを送信するために使用しているコードに焦点を当ててください。 –

+0

Node.jsではなくJavascriptで文字列を分割することはできません。また、これらの種類の日付のハックアップは、ほとんどの場合、ある時点で後部のビットに戻って来ることに注意してください。代わりに日付ライブラリ(moment.js)を使用してください –

答えて

1

"?"疑問符、仮定、いくつかのUTF - 8記号ではない可能性があります。

var endDate = new Date(req.query.endDate); 
endDate.toLocaleDateString() 

または

var endDate = new Date(req.query.endDate); 
(endDate.getMonth() + 1) + "/" + endDate.getDate() + "/" + endDate.getFullYear(); 

または正規表現のアプローチ:それは自分自身をフォーマットの日付を使用することができます

req.query.endDate.toString().match(/[0-9]+/g); // [month, date, year] 
+0

not req.query.endDate.toLocaleDateStringは関数ではありません – writeToBhuwan

+0

それは使用されました:endDate = new Date(req.query.endDate); //メインのコメントを変更しました – FieryCat

+0

新しいDate(req.query.endDate)にエラーが発生しました。無効な日付 – writeToBhuwan

関連する問題