2016-06-21 3 views
4

私は、日付(日付ではない日付のみ)をWeb API 2 RESTサービスに投稿するAngularアプリケーションを用意しました。インドからの誰かがタイムゾーンの問題のためにアプリケーションを使用しているときに問題に遭遇しています。角度からWeb APIの日付を渡す正しい方法2

現在、Angularアプリケーションは、日付をUTCタイムゾーンでISO8601形式に変換し、Web APIに送信しています。データがWeb API側で受信されると、日付が不正確になります。 2011年6月21日がフォームに入力された場合、日付は2011年6月20日に終了します。希望する解決策は、フォームに入力された実際の日付値をAPIが受け取った日付値にすることです。

解決策の1つは、日付を日付の代わりに文字列として扱い、日付部分を渡すことです。これはちょうど私のハックのように思えるし、それを行うの "正しい"方法のように見えません。

この状況を正しく処理する方法は何ですか?

アプリケーションに多くの日付フィールド入力があるという事実を考慮すると、すべての日付入力値にわたってソリューションを実装する簡単な方法がありますか?

+0

使用 'momentjs'になります。サーバーに送信する日付を抽出するときには、ISO8601形式の文字列として抽出します。それをサーバーに送信し、DateKind.Utcフラグを使用して日付を逆シリアル化する必要があるサーバー側でDateTimeオブジェクトを使用します。逆扱いの日付をangleの文字列として扱う場合、webapi(json.netを使用する場合)はdatetimesをISO表記にシリアル化します。 – Igor

答えて

0

yyyy-MM-ddは米国/インドで受け付けられますので、WebAPIに渡すことができます。投稿する前にJavaScriptでこのように日付を変更することができます。あなたはあまりにも時間が必要な場合

$scope.MyDate = $filter('date')($scope.MyDate, 'yyyy-MM-dd', timezone); 

、フォーマットが(それがフィールドまたはコントロールだった場合、あなたが言及しなかった)任意の日時ピッカーコントロールでyyyy-MM-ddTHH:mmZ

+0

問題は、4/19/2016(IST時間)が2016-04-18T18:30:00Z(UTC時間)に変換されることです。その後、Web APIがそれを受け取ると、UTCタイムゾーンを無視し、日付を4/18/2016(EST時間)として解析しているように見えます。 – jkruer01