0
xdate: 2013-10-26  = 
Fri Oct 25 2013 20:00:00 GMT-0400 (Eastern Daylight Time)

xdate: Oct 26, 2013  = 
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)

xdate: 10/26/2013  =
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)

xdate: Oct. 26, 2013  =
Sat Oct 26 2013 00:00:00 GMT-0400 (Eastern Daylight Time)

上記の文字列で new Date(xdate) を使用して JavaScript で日付を作成すると、yyyy-mm-dd を除いてすべて正常に動作するように見えますが、前夜の午後 8 時に表示されます。残念ながら、これは HTML5 の type=date によって作成された形式です。その文字列で通常の日付も作成する方法。

私の質問はもっとあると思います.1つの形式で4時間ずれている日付が作成されるのはなぜですか. 2013-10-26 を使用して日付を作成し、getDate を実行して 25 日を取得します。それは間違っているようです!!

4

2 に答える 2

1

前日の夜8時に出てくる

いいえ、あなたの日時は前夜の午後 8 時までは出てきません。作成する日付は UTC 日付であることに注意してください。これが表示される理由は、ローカル タイム ゾーンが UTC (GMT-4) の 4 時間前であるためです。これは、ローカル タイム ゾーンに基づいて計算された日付の表示にすぎません。内部的には、日時は1970 年 1 月 1 日 00:00:00 UTC からのミリ秒数で表されます。

Date.getTime()すべてのタイムゾーンで同じ値を返す日付の内部表現を取得できます。たとえば、次のようにします。

var date = new Date("2013-10-26");
  • ローカル タイム ゾーンが GMT-4 の場合: プレゼンテーションは次のように表示されます。Fri Oct 25 2013 20:00:00 GMT-0400

  • ローカル タイム ゾーンが GMT+7 の場合。以下が表示されます。Sat Oct 26 2013 07:00:00 GMT+0700

しかし、同じ値をdate.getTime()返します。それがあなたが気にするべき価値です。

于 2013-10-26T10:23:31.057 に答える
0

次のようにデータを作成して、このtimeone offset問題を回避できます。

xdate = '2013-10-26';
var date = new Date(xdate.replace(/-/g, ','));

テスト:

var d1 = new Date(xdate); // Fri Oct 25 2013 20:00:00 GMT-0400 (EDT)

var d2 = new Date(xdate.replace(/-/g, ',')); // Sat Oct 26 2013 00:00:00 GMT-0400 (EDT)

d1との間の日付値の違いに注目してくださいd2

d2Oct 26 2013この-ため、,交換品に の正しい値を示しています。

于 2013-10-26T10:29:49.830 に答える