2013-07-17 27 views
7

MVC uygulaması ve Kendo DatePicker arasındaki zaman farkları ile ilgili olarak aşağıdaki sorunu gözlemliyoruz. Web sunucusu UTC + 0'da çalışıyor. Web istemcileri farklı saat dilimlerinde (UTC + 1, UTC + 3, UTC-5, vb.) Çalışıyor.Kendo MVC Datepicker zaman dilimi çeviri

Web sayfasında, kullanıcının tek bir gün veya bir gün seçtiği bir Kendo tarih seçicisi (zaman birimi yok) vardır. ay. Sahnelerin arkasında Tarih, saat ve zaman dilimi bilgilerini içeren tam Tarih nesneleri kullanılarak bir AJAX isteğinde gönderilir.

İstemcinin bulunduğu saat dilimine bakılmaksızın yalnızca tarih bölümünde ilgileniyoruz. Kullanıcı bir tarih/ay seçtiğinde, yerel sunucu saatinde bir C# DateTime nesnesi almak istiyoruz. Örneğin

:

Kullanıcı UTC + 1 olduğunu ve seçer/07/2013' '01 Biz almak için bekliyoruz fiili C# DateTime nesnesi olarak örneği 23:00'/06/2013 '30 '01/07/2013 00:00:00'

şu anda Global.asax aşağıdaki ayarı kullanıyor:

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

sen tavsiye eder misiniz?

cevap

0

Sorun, dönüşümün tümü, JavaScript Date ve C# DateTime arasında büstündürülüyor. Yaptığım şey, tarihi sunucuya gönderilmeden önce bir dizeye dönüştürüyorum. Bunu yapmak için Kendo DataSource'un parameterMap işlevine bağlanabilirsiniz.

parameterMap fonksiyonunu kullanarak: JavaScript hatası veya başka wonkiness olmadan Date nesnesine bu dönüştürebilir çünkü

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; 
    } 
    } 
}); 

Ben de JsonFormatter.SerializerSettings.DateFormatString = "YYYY/dd/MM hh:mm:ss" ayarlayın. DateTimeZoneHandling'unuzu UTC olarak değiştirmenizi de öneririm. Zaman dilimi ofsetine ihtiyacınız yok, değil mi?

Denetleyicinizdeki sunucu tarafında, DateTime.Parse()'u kullanabilir veya derleyicinin örtülü olarak dönüştürme yapmasına izin verebilirsiniz.

İlgili konular