Yukarıdaki yanıtların hiçbiri bana gerçekten yardımcı olmadığından bu soruna bir çözüm üzerinde çalışıyorum. Jquery hafta takvim ile çalışıyorum ve tarihte sunucu ve yerel olarak saat dilimi bilgileri olması gerekiyordu. Biraz kazdıktan sonra, başkalarına yardımcı olabilecek bir çözüm buldum.
Asp.net 3.5, vs 2008, asp.net MVC 2 ve jquery hafta takvimi kullanıyorum,
İlk olarak, Steven Levithan tarafından yazılan ve müşteri tarafında tarihlerle başa çıkmaya yardımcı olan bir kütüphane kullanıyorum, Steven Levithan'ın tarih kütüphanesi . İsoUtcDateTime formatı ihtiyacım olan şey için mükemmel. Benim jquery AJAX çağrısında isoUtcDateTime biçiminde kütüphane ile sağlanan format işlevini kullanıyorum ve ajax çağrısı eylem yöntemime çarptığında, datetime Kind yerel olarak ayarlanır ve sunucu saatini yansıtır.
AJAX aracılığıyla sayfama tarihler gönderdiğimde, tarihleri "ddd, dd MMM yyyy HH ':' mm ':' ss 'GMT'zzzz" kullanarak biçimlendirerek metin dizeleri olarak gönderirim. Bu biçim, istemci tarafı kullanılarak kolayca dönüştürülebilir
var myDate = new Date(myReceivedDate);
İşte benim tam çözüm eksi Steve Levithan kaynağı, indirebilirsiniz:
Denetleyici:
public class HomeController : Controller
{
public const string DATE_FORMAT = "ddd, dd MMM yyyy HH':'mm':'ss 'GMT'zzzz";
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
return View();
}
public JsonResult GetData()
{
DateTime myDate = DateTime.Now.ToLocalTime();
return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
}
public JsonResult ReceiveData(DateTime myDate)
{
return new JsonResult { Data = new { myDate = myDate.ToString(DATE_FORMAT) } };
}
}
JavaScript:
<script type="text/javascript">
function getData() {
$.ajax({
url: "/Home/GetData",
type: "POST",
cache: "false",
dataType: "json",
success: function(data) {
alert(data.myDate);
var newDate = cleanDate(data.myDate);
alert(newDate);
sendData(newDate);
}
});
}
function cleanDate(d) {
if (typeof d == 'string') {
return new Date(d) || Date.parse(d) || new Date(parseInt(d));
}
if (typeof d == 'number') {
return new Date(d);
}
return d;
}
function sendData(newDate) {
$.ajax({
url: "/Home/ReceiveData",
type: "POST",
cache: "false",
dataType: "json",
data:
{
myDate: newDate.format("isoUtcDateTime")
},
success: function(data) {
alert(data.myDate);
var newDate = cleanDate(data.myDate);
alert(newDate);
}
});
}
// bind myButton click event to call getData
$(document).ready(function() {
$('input#myButton').bind('click', getData);
});
</script>
Umarım bu hızlı örnek, içinde bulunduğum aynı durumda başkalarına yardımcı olur. Şu anda Microsoft JSON Serileştirme ile çok iyi çalışıyor gibi görünüyor ve zaman dilimleri arasında tarihlerimi doğru tutar.