0

私は日時に少し苦労しています。asp.net mvc api コントローラー、microsoft sql サーバー、および AngularJS を使用しています。

ボタンをクリックすると、JSON 形式の日付が API コントローラーに送信されます。2015-11-31 00:00 を投稿し、Fiddler で実際に投稿された内容を確認すると、日付が 2015-11-30T23:00:00.000Z のようにフォーマットされていることがわかります。(2015-11-31 - 1 時間 UTC+01:00 アムステルダム、ベルリン、ベル....) SQL サーバーが存在する可能性があるタイムゾーンとクライアントとの間に違いがある可能性があるため、これは完璧です。(またはそれは?)

ただし、問題は次のとおりです。SQLサーバーから日付を取得するときに、クライアントのタイムゾーンが考慮されません。SQL サーバーから DateTime オブジェクトを読み取り、それを JSON 形式で返すと、表示されている日付は 2015-11-30T23:00:00.000Z です。クライアントがいるタイムゾーンに1時間を追加したい.

私の質問は次のとおりです。api-controller から返された JSON 文字列を逆シリアル化しながら、タイムゾーンを考慮に入れるにはどうすればよいですか?

ティア!

4

1 に答える 1

0

問題は、オブジェクトが逆シリアル化されているときに、日付プロパティがDateTime 型ではないことが判明しました。文字列型です。new Date("2015-11-30T23:00:00.000Z") を使用して日付に変換するだけでうまくいきます。

私はそれのためのフィルターを作りました:

.filter('from_gmt_to_local_date', [function () {
  return function (text) {
    return new Date(text);
  };
}])

使用法:

{{contract.StartDate | from_gmt_to_local_date | date:'dd-MM-yyyy'}}

これが誰にも役立つことを願っています。

于 2015-05-12T09:53:35.880 に答える