2013-07-17 3 views
7

MVCアプリと剣道DatePickerとの時差に関する以下の問題を鑑みています。 WebサーバーはUTC + 0で動作しています。Kendo MVC Datepickerタイムゾーン変換

ウェブページには、剣道の日付ピッカー(時間部分なし)が含まれており、ユーザーは1日または1日を選択します。月。ビルトインシーンAJAXリクエストでは、日付と時刻の情報を含む完全なDateオブジェクトを使用して日付が送信されます。

クライアントが所属するタイムゾーンに関係なく、日付部分のみに関心があります。ユーザーが日付/月を選択すると、C# DateTimeオブジェクトをローカルサーバーの時刻に受信します。例えば

ユーザーはUTC + 1にあり、'01/07/2013' を選択し、 実際のC#のDateTimeオブジェクトは'30/06/2013年午前23時00' としてインスタンス化された 我々が得ることを期待'01/07/2013年午前0' 時00分00秒

現在、Global.asaxの中に次の設定を使用している:

GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandliig = Newtonsoft.Json.DateTimeZoneHandling.Local; 

あなたはアドバイスしていただけますか?

答えて

0

問題は、JavaScript DateとC#DateTimeの間で変換がすべてボークアップすることです。私がしているのは、日付を文字列に変換してからサーバーに送信することです。これを行うには、Kendo DataSourceのparameterMap関数にフックすることができます。 parameterMap機能使用

var ds = new kendo.data.DataSource({ 
    transport: { 
    parameterMap: function(data, type) { 
     if (type === 'create' || type === 'update') { 
     // this changes the date to 'dd/MM/YYYY' format 
     data.date = kendo.toString(data.date, 'd'); 
     } 
     return data; 
    } 
    } 
}); 

をJavaScriptがエラーまたは他のwonkinessせずにDateオブジェクトにこれを変換することができますので、私はまたJsonFormatter.SerializerSettings.DateFormatString = "YYYY/dd/MM hh:mm:ss"を設定します。 DateTimeZoneHandlingUTCに変更することをおすすめします。タイムゾーンオフセットは必要ありませんか?

コントローラのサーバー側では、DateTime.Parse()を使用するか、コンパイラに暗黙的に変換させることができます。

関連する問題