私は、javascript datepickerを使用して表示し、ユーザーが部屋の予約に利用可能なスケジュール日のカレンダーから日付を選択できるようにするという一般的な問題に遭遇しています。
ブラウザのタイムゾーン変換は、これらの日付が常にある程度ずれていることを意味します。そのため、ユーザーに予約日を表示するときに、サーバー(アセットにローカルなタイムゾーンまたはDBに保存されている部屋)はそれらを「今日」として表示します。
ユーザーのブラウザでJavaScriptの日付変換を無視し、データベースから渡された実際の日時のみを使用するようにしたいと思います。
ただし、これは次のような非常に単純な例でも発生します。
var date = '2013-02-05';
var newdate = new Date(date);
console.log(newdate); // Mon Feb 04 2013 16:00:00 GMT-0800 (PST)
変数はdate
ブラウザによってGMTであると想定されているようで、それからjavascript dateオブジェクトを作成すると、そのGMT時刻が現地時間に変換されます。
この場合のベストプラクティスは、データベースでGMT日付を使用し、サイトの現地時間オフセットをjavascriptの変数として設定します。これを使用して、エンドユーザーに表示される日付をオフセットし、受信した日付を再度オフセットすることができます。データベースに挿入するためのエンドユーザーから?
潜在的な落とし穴が非常に多いため、これは混乱を招きます。PHPロケール、mysqlロケール、またはブラウザのロケールはすべてそれを考慮に入れて、最終日を台無しにする可能性があります。一貫した日付値を確保するためのアドバイスをいただければ幸いです。