Angular UI DatePicker のタイムゾーン調整 質問する

Angular UI DatePicker のタイムゾーン調整 質問する

SQL Server に日付として保存されている日付があります。SQL でクエリを実行すると、日付は 4/24/2014 と表示されます。これは正しいです。日付は UTC でクライアント側に正しく渡されます。その日付を編集するには、Angular UI DatePicker を使用します。DatePicker はローカル タイムゾーンに基づいてその日付を調整するため、常に 1 日ずれています。

それが起こっているのはわかります。日付ではなく日付時刻を編集している場合は、タイムゾーンを調整するのが正しいでしょう。ただし、この場合は日付だけなので、タイムゾーンは気にせず、データベースにある日付を編集したいだけです。

タイムゾーンが調整されていることを確認できます。Windows マシンのタイムゾーンを UTC に変更すると、DatePicker に正しい日付が表示されます。

そこで質問なのですが、DatePicker にタイムゾーン調整をオフにして、日付を UTC 形式で管理するように指示し、SQL Datetime ではなく SQL Date で動作するようにする方法はありますか?

ベストアンサー1

少し前に、非常によく似た問題がありました。サーバー側でローカルの日付 (つまり、yyyy-mm-dd のみで、タイムゾーン/時間情報なし) を保存したかったのですが、Angular Bootstrap Datepicker は JavaScript Date オブジェクトを使用するため、これは不可能でした (ご自分でもおわかりのように、JSON で UTC 日時文字列にシリアル化されます)。

私は次の指令で問題を解決しました:https://gist.github.com/weberste/354a3f0a9ea58e0ea0de

基本的に、日付ピッカーで日付が選択されるたびに値を再フォーマットします (この値、yyyy-mm-dd 形式の文字列はモデルに保存されます)。また、ビューにデータを入力するためモデルにアクセスするたびに、日付ピッカーが適切に処理できるように、値を Date オブジェクトに再度ラップする必要があります。

おすすめ記事