2017-04-24 12 views
0

角度アプリケーションでdatetimeをキャプチャする時と分のテキストボックスフィールドを持つカレンダーがあります。フロントエンドからWeb APIへの日付投稿

これは、以下のような完全な日付に変換されます:私は、Web APIの入力としてこのnotificationDateを投稿した場合のjavascriptは私のローカルタイムゾーンを追加しているので、それがウェブAPIに達したときに

accidentVM.AccidentNotificationDateFull = new Date(accidentVM.AccidentNotificationDate.getFullYear(), accidentVM.AccidentNotificationDate.getMonth(), accidentVM.AccidentNotificationDate.getDate(), 
               parseInt(accidentVM.AccidentNotificationHour), parseInt(accidentVM.AccidentNotificationMinute), 0); 
var notificationDate = accidentVM.AccidentNotificationDateFull; 

は、今ではさまざまなってきています(これは私の場合は+ 5:30です)。

は回避するために、この

私はクライアントside.ThisからGMTの調整は基本的にGMTオフセット減算のノートを取ったり、それがサーバに到達したとき、再び正しいとなるように、入力からそれを追加しました。

機能が

this.convertDate = function (dateVM) {    
       var dateObj = dateVM; 
       if (new Date().getTimezoneOffset() < 0) { 
        dateVM = new Date(dateObj.setTime(dateObj.getTime() - new Date().getTimezoneOffset() * 60 * 1000)); 
       } 
       else { 
        dateVM = new Date(dateObj.setTime(dateObj.getTime() + new Date().getTimezoneOffset() * 60 * 1000)); 
       }     
}; 

のように見えます。これは、問題を解決し、私は正しい日付時刻が掲載さばかり今見る、しかしそれはまだサーバー内に到達しながら、最後にTを追加します。

は、フロントエンド enter image description here

から、ここでの入力を参照してください、それがウェブAPIに到達したとき、それはなり

enter image description here

した場合はシオマネキ要求

enter image description here

対応それが注目されているUTCまたは最後にZが追加されています。

私の探求は、私がZを取り除くことができる方法があれば、より具体的には、DateTimeの種類は不特定/ローカルであるべきですか?

+0

ISO 8601は日付を文字列として送信するのに最適な形式です。あなたのバックエンドは単に文字列を読み、それを瞬時に解析する必要があります。あなたはあなたが望むタイムゾーンを適用することができます – Phil

答えて

0

WebApiConfigクラスのローカル日付形式の設定を以下に追加しました。これにより、web api jsonフォーマッタがローカルタイムゾーンに変換されます。

var jsonFormatter = config.Formatters.JsonFormatter; 
jsonFormatter.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local; 

このように、GMTの明示的なクライアントサイド操作は必要ありません。

関連する問題