IEこの文字列をDateオブジェクトとして解析できないのはなぜですか。
var d = Date.parse("Fri Jun 11 04:55:12 +0000 2010"); // returns NaN
ただし、FireFoxではうまく機能します。私はIE 8を実行しています。
ありがとう。
文字列の形式はブラウザとオペレーティングシステムによって異なるため、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コードでブラウザをチェックしてから、入力した日付文字列を指定する必要があります。
jQueryグローバリゼーションプラグイン 日付解析が最適に機能することがわかりました。他のメソッドにはクロスブラウザーの問題があり、date.jsのようなものはかなり長い間更新されていませんでした。
また、ページにdatePickerは必要ありません。ドキュメントに記載されている例に似たものを呼び出すことができます。
$.datepicker.parseDate('yy-mm-dd', '2007-01-26');
日付オブジェクトを作成してタイムスタンプを返すことで問題が解決しました。ただし、このためには、文字列を次の形式に変換する必要があります。
year, month, date, hours, minutes, seconds,ms
例は次のようになります。
dateObj = new Date(year, month, date);
timestamp = dateObj.getTime();
これは、IEおよびFFで保存して機能します。
IE Dev Center:Date Object(JavaScript)
あなたの例では、次のようにします。
//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
日付が_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));
_
+00000のため。それを最後に追加してみてください
var d = Date.parse("Fri Jun 11 04:55:12 2010 +0000");