Tôi đã nghiên cứu một giải pháp cho vấn đề này vì không có câu trả lời nào ở trên thực sự giúp tôi. Tôi đang làm việc với lịch tuần jquery và cần ngày của tôi để có thông tin múi giờ trên máy chủ và cục bộ trên trang. Sau khi đào bới một chút, tôi đã tìm ra một giải pháp có thể giúp đỡ người khác.
Tôi đang sử dụng asp.net 3.5, so với 2008, asp.net MVC 2 và lịch tuần jquery,
Đầu tiên, tôi đang sử dụng một thư viện được viết bởi Steven Levithan, giúp xử lý các ngày ở phía khách hàng, thư viện ngày của Steven Levithan . Định dạng isoUtcDateTime là hoàn hảo cho những gì tôi cần. Trong cuộc gọi AJAX jquery của tôi, tôi sử dụng chức năng định dạng được cung cấp với thư viện với định dạng isoUtcDateTime và khi cuộc gọi ajax chạm vào phương thức hành động của tôi, Loại thời gian được đặt thành cục bộ và phản ánh thời gian của máy chủ.
Khi tôi gửi ngày đến trang của mình qua AJAX, tôi gửi chúng dưới dạng chuỗi văn bản bằng cách định dạng ngày bằng cách sử dụng "ddd, dd MMM yyyy HH ':' mm ':' ss 'GMT'zzzz". Định dạng này dễ dàng chuyển đổi phía khách hàng bằng cách sử dụng
var myDate = new Date(myReceivedDate);
Đây là giải pháp hoàn chỉnh của tôi trừ nguồn của Steve Levithan, mà bạn có thể tải xuống:
Điều khiển:
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>
Tôi hy vọng ví dụ nhanh này sẽ giúp những người khác trong tình huống tương tự tôi gặp phải. Tại thời điểm này, nó dường như hoạt động rất tốt với Microsoft JSON serialization và giữ cho ngày của tôi chính xác theo các múi giờ.