Saya telah mengerjakan solusi untuk masalah ini karena tidak ada jawaban di atas yang benar-benar membantu saya. Saya bekerja dengan kalender minggu jquery dan membutuhkan tanggal saya untuk memiliki informasi zona waktu di server dan secara lokal di halaman. Setelah sedikit menggali, saya menemukan solusi yang dapat membantu orang lain.
Saya menggunakan asp.net 3.5, vs 2008, asp.net MVC 2, dan kalender minggu jquery,
Pertama, saya menggunakan perpustakaan yang ditulis oleh Steven Levithan yang membantu menangani tanggal di sisi klien, perpustakaan tanggal Steven Levithan . Format isoUtcDateTime sangat cocok untuk apa yang saya butuhkan. Dalam panggilan AJAX jquery saya, saya menggunakan fungsi format yang disediakan dengan perpustakaan dengan format isoUtcDateTime dan ketika panggilan ajax hits metode tindakan saya, Jenis datetime diatur ke lokal dan mencerminkan waktu server.
Ketika saya mengirim tanggal ke halaman saya melalui AJAX, saya mengirimnya sebagai string teks dengan memformat tanggal menggunakan "ddd, dd MMM yyyy HH ':' mm ':' ss 'GMT'zzzz". Format ini mudah dikonversi menggunakan sisi klien
var myDate = new Date(myReceivedDate);
Ini solusi lengkap saya dikurangi sumber Steve Levithan, yang bisa Anda unduh:
Pengendali:
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>
Saya harap contoh cepat ini membantu orang lain dalam situasi yang sama dengan saya. Pada saat ini tampaknya bekerja dengan sangat baik dengan Serialisasi Microsoft JSON dan menjaga tanggal saya benar di seluruh zona waktu.