2016-05-19 6 views
0

d以下のコードで、私が米国のタイムゾーンにいる場合、1日前に警告します。この問題はどのように解決しますか?JavaScript Date Time Zoneの問題?

 

d = new Date("2016-05-31"); 
alert(d); 
 

インドのタイムゾーンに表示されていると、なぜこのようなことが起こるのか分かりません。

+0

ウェブがインドで実行されている場合、その日付はあなたのタイムゾーンの真夜中を表しますが、それより前の日であり、より西洋のタイムゾーンでもあります。日付形式に関するブラウザの非互換性のために、文字列コンストラクタを使用して日付をインスタンス化することは、お勧めできません。これはあなたを助けるかもしれません:http://stackoverflow.com/questions/439630/how-do-you-create-a-javascript-date-object-with-a-set-timezone-without-using-as – ManoDestra

+0

はい私は理解していますしかし、もし私が中立になりたいのであれば、彼がdbで投稿したdatepickerに日付を表​​示したいのですが。 –

+0

おそらく、私が '.setUTourours()'を参照した記事で示唆されているように、UTCを使うべきでしょう。 – ManoDestra

答えて

1

あなたが使用して、異なる日付を作成することができます。

var date = new Date(2016, 4, 31); 

それとも、あなたがあなたの現在のメソッドを使用して、それを作成した後、ブラウザ/地域日付の非互換性を考えると、あまり好ましくない(日付のUTC時間を設定することができます):

var date = new Date("2016-05-31"); 
date.setUTCHours(0); 

は、このスクリプトを試してみて、違いを強調するために、出力用のコンソールをチェックしてください。

var date1 = new Date('2016-05-31'); 
var date2 = new Date(2016, 4, 31); 

var str1 = date1.toISOString(); 
var str2 = date2.toISOString(); 

console.log('date1', date1, str1, date1.getUTCHours(), date1.toUTCString()); 
console.log('date2', date2, str2, date2.getUTCHours(), date2.toUTCString()); 

date1.setUTCHours(0); 
date2.setUTCHours(0); 

console.log('date1', date1, str1, date1.getUTCHours(), date1.toUTCString()); 
console.log('date2', date2, str2, date2.getUTCHours(), date2.toUTCString()); 

Moment.jsタイムライブラリを参照することもできます。具体的には、Moment.js timezoneライブラリ。

2

デフォルトのタイムゾーンがGMT(Z)になるように、短縮されたISOタイムストリングを使用して日付インスタンスを初期化しています。

var d = new Date(2016, 4, 31); 

仮定しますローカルタイムゾーン:代わりに、数値の年、月、日のヶ月を受け入れ、三引数のコンストラクタを使用することができます。月は0から番号付けされています。

関連する問題