मैं इस मुद्दे के समाधान पर काम कर रहा हूं क्योंकि उपरोक्त किसी भी उत्तर ने वास्तव में मेरी मदद नहीं की। मैं jquery सप्ताह के कैलेंडर के साथ काम कर रहा हूं और सर्वर पर और स्थानीय रूप से पृष्ठ पर समय क्षेत्र की जानकारी के लिए मेरी तिथियों की आवश्यकता है। आसपास काफी खुदाई करने के बाद, मैंने एक समाधान निकाला जो दूसरों की मदद कर सकता है।
मैं asp.net 3.5, बनाम 2008, asp.net MVC 2 और jquery सप्ताह कैलेंडर का उपयोग कर रहा हूं,
सबसे पहले, मैं स्टीवन लेविथान द्वारा लिखी गई एक लाइब्रेरी का उपयोग कर रहा हूं जो क्लाइंट साइड, स्टीवन लेविथ की दूसरी लाइब्रेरी में तारीखों से निपटने में मदद करती है। । IsoUtcDateTime का प्रारूप मेरे लिए आवश्यक है। मेरे jquery AJAX कॉल में मैं isoUtcDateTime प्रारूप के साथ पुस्तकालय के साथ प्रदान किए गए प्रारूप फ़ंक्शन का उपयोग करता हूं और जब ajax कॉल मेरी क्रिया विधि को हिट करता है, तो डेटाइम काइंड स्थानीय पर सेट होता है और सर्वर समय को दर्शाता है।
जब मैं AJAX के माध्यम से अपने पृष्ठ पर तारीखें भेजता हूं, तो मैं उन्हें "ddd, dd MMM yyyy HH ':' mm ':' ss 'GMT'zzzz" का उपयोग करके तिथियों को पाठ स्ट्रिंग के रूप में भेजता हूं। इस प्रारूप को आसानी से परिवर्तित ग्राहक पक्ष का उपयोग कर रहा है
var myDate = new Date(myReceivedDate);
यहाँ मेरा पूरा समाधान माइनस स्टीव लेविथान का स्रोत है, जिसे आप डाउनलोड कर सकते हैं:
नियंत्रक:
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) } };
}
}
जावास्क्रिप्ट:
<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>
मुझे आशा है कि यह त्वरित उदाहरण दूसरों को उसी स्थिति में बाहर निकालने में मदद करता है जिस स्थिति में मैं था। इस समय यह Microsoft JSON Serialization के साथ बहुत अच्छी तरह से काम करता है और मेरी तिथियों को टाइमज़ोन में सही रखता है।