4

最初の試行は IE 9 コンソールです。

new Date('2013-10-24T07:32:53') 
Thu Oct 24 07:32:53 UTC+0200 2013 

期待どおりに戻ります

次の試行は、FireFox 24 コンソールです。

new Date('2013-10-24T07:32:53')
Date {Thu Oct 24 2013 07:32:53 GMT+0200 (Central Europe Standard Time)}

次に、Chrome 30 コンソールに入ります。

new Date('2013-10-24T07:32:53')
Thu Oct 24 2013 09:32:53 GMT+0200 (Central Europe Daylight Time)

しかし、時刻はここで09です。07のはずです。

これはクロムのバグですか、それともここで何か間違っていますか?

C# から JSON で取得したこの「2013-10-24T07:32:53」以外の形式は使用できません。このタイムスタンプの時間を取得する必要がありgetHoursますが、Chrome で間違った値を取得しています。

解決:

var inputHour = input.split('T')[1];
inputHour = inputHour.substring(0, 2);
4

3 に答える 3

6

そのバグはありません。日付解析関数の実装はブラウザーによって異なり、受け入れられるdateStringの形式も異なります。

ただし、この形式は ...リンク全体で同じように機能するようです:

 new Date("October 13, 1975 11:13:00")

可能であれば、試して使用してください

new Date(year, month, day, hours, minutes, seconds, milliseconds)

保証された結果のために。


フォーマットに関しては、自分で解析してみてください。何かのようなもの :

var str = '2013-10-24T07:32:53'.split("T");
var date = str[0].split("-");
var time = str[1].split(":");

var myDate = new Date(date[0], date[1]-1, date[2], time[0], time[1], time[2], 0);

(これについては RobG に感謝します) : 上記で使用されている Date コンストラクターは、月が 0 ~ 11 であることを想定しています。

参照

于 2013-10-24T06:08:47.347 に答える
2

このスレッドを参照してください:

Date.parse の結果が正しくないのはなぜですか?

Date コンストラクターの解析シグネチャの動作は、完全に実装に依存しているようです。

于 2013-10-24T06:08:14.570 に答える
0

与えられた:

var s = '2013-10-24T07:32:53';

ES5 準拠のブラウザーでは、次のことができます。

var d = new Date(s + 'Z');

ただし、使用中のすべてのブラウザ間で互換性を保つために、使用することをお勧めします (日付が UTC であると仮定します):

function dateFromString(s) {
  s = s.split(/\D/);
  return new Date(Date.UTC(s[0],--s[1],s[2],s[3],s[4],s[5]));
}
于 2013-10-24T06:46:49.473 に答える