web-dev-qa-db-ja.com

IE JavaScriptの日付解析エラー

IEこの文字列をDateオブジェクトとして解析できないのはなぜですか。

var d = Date.parse("Fri Jun 11 04:55:12 +0000 2010"); // returns NaN

ただし、FireFoxではうまく機能します。私はIE 8を実行しています。

ありがとう。

13
user342552

文字列の形式はブラウザとオペレーティングシステムによって異なるため、IE 8でNaN値を取得し、Firefoxで機能します。

たとえば、IE6 for Windows XPでは、文字列は次の形式になっています。

Tue Dec 05 16:47:20 CDT 2006

しかし、Firefox for Windows XPでは、文字列は

Tue Dec 05 2006 16:47:20 GMT-0500

両方のブラウザと互換性を持たせるには、最初にjavascriptコードでブラウザをチェックしてから、入力した日付文字列を指定する必要があります。

9
Jitendra

jQueryグローバリゼーションプラグイン 日付解析が最適に機能することがわかりました。他のメソッドにはクロスブラウザーの問題があり、date.jsのようなものはかなり長い間更新されていませんでした。

また、ページにdatePickerは必要ありません。ドキュメントに記載されている例に似たものを呼び出すことができます。

$.datepicker.parseDate('yy-mm-dd', '2007-01-26');
10
Brian Ellis

日付オブジェクトを作成してタイムスタンプを返すことで問題が解決しました。ただし、このためには、文字列を次の形式に変換する必要があります。

year, month, date, hours, minutes, seconds,ms

例は次のようになります。

dateObj = new Date(year, month, date);
timestamp = dateObj.getTime();

これは、IEおよびFFで保存して機能します。

IE Dev Center:Date Object(JavaScript)

Mozilla Dev Network:日付

あなたの例では、次のようにします。

//your string
var str = "Fri Jun 11 04:55:12 +0000 2010";
//maps months to integer from 0 to 11
var monthArray = {"Jan":0, "Feb":1, "Mar":2, "Apr":3, "May":4, "Jun":5, "Jul":6, "Aug":7, "Sep":8, "Oct":9, "Nev":10, "Dec":11};
//get the values from the string
var regex = /^[^ ]+ ([^ ]+) (\d{1,2}) (\d{2}):(\d{2}):(\d{2}) \+(\d{4}) (\d{4})$/;
match = regex.exec(str);
var month   = monthArray[match[1]],
    date    = match[2],
    hours   = match[3],
    minutes = match[4],
    seconds = match[5],
    ms      = match[6],
    year    = match[7];

//create date object with values
var dateObject = new Date(year, month, date, hours, minutes , seconds, ms);

var ts = dateObject.getTime(); //timestamp in ms
4
Luxx

問題

日付が_2020-04-07 05:30:00_のようにSQL datetimeに格納されていて、IEで解析したい場合。 IE using new Date()を使用してJavaScriptで解析すると、無効な日付が出力されますが、最新バージョンのChrome =およびFirefoxはこの日付を正しく解析します。

解決

SQLからのT文字列で_<space>_をdatetimeに置き換える必要があります。

_let myDate = '2020-04-07 05:30:00';
let myFormattedDate = myDate.replace(' ', 'T'); // '2020-04-07T05:30:00'
console.log(new Date(myFormattedDate));
_
0
Hamza Rashid

+00000のため。それを最後に追加してみてください

var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000");
0
TheBrain