2010-09-16 7 views
9

मैं उपयोगकर्ता की स्थानीय प्रणाली की तिथि और समय प्राप्त करना चाहता हूं।उपयोगकर्ता के स्थानीय sytem के डेटाटाइम को asp.net mvc में कैसे प्राप्त करें?

मैं एएसपी.नेट एमवीसी में नियंत्रक में इसे कैसे पूरा कर सकता हूं?

उत्तर

7

मुझे लगता है कि आपको इसे जावास्क्रिप्ट के माध्यम से कैप्चर करने की आवश्यकता है और फिर इसे सर्वर पर वापस भेज दें (उदाहरण के लिए AJAX का उपयोग करके)।

जावास्क्रिप्ट में: var d = new Date() कब्जा तुम क्या जरूरत है।

नोट:: आवश्यक है jQuery

http://www.w3schools.com/js/js_obj_date.asp

+0

हाय जस्टिन, मैंने इस दृष्टिकोण को भी आजमाया और जावास्क्रिप्ट के साथ समय निर्धारित करने और इसे सर्वर के पक्ष में लाने के लिए, मैंने कुकीज़ और setTimeInterval विधि का उपयोग किया। यह सामान्य रूप से ठीक काम करता है लेकिन AJAX रूपों के मामले में मुझे नहीं पता कि यह कुकीज़ के साथ पुराना समय क्यों भेजता है। क्या आप इससे मेरी सहायता कर सकते हैं? धन्यवाद – gaurav

1

कोई तरीका नहीं है कि आप सर्वर-साइड एएसपीएनटी एमवीसी कोड में ऐसा कर सकते हैं।

या तो आप सभी समय क्षेत्र की DtropDown सूची के साथ के लिए संकेत करें और उसे सूची से यह चुनने देती हैं और दूसरा विकल्प-जावास्क्रिप्ट क्लाइंट में कब्जा स्थानीय सिस्टम समय के लिए है और एक AJAX अनुरोध से अधिक सर्वर पर भेज या एक पोस्ट-बैक

वास्तव में एक और तरीका है - आप उपयोगकर्ता की मशीन के आईपी को कैप्चर कर सकते हैं और उस देश को ढूंढ सकते हैं जिस पर आईपी से संबंधित है और उस देश का टाइमज़ोन चुनें। आप MaxMind GeoIP डेटाबेस का उपयोग कर सकते हैं जो आपको यह आसानी से करने में मदद कर सकता है।

+0

हाय, मैंने इस दृष्टिकोण को भी आजमाया और जावास्क्रिप्ट के साथ समय निर्धारित करने और इसे सर्वर की तरफ ले जाने के लिए, मैंने कुकीज़ और सेटटाइम इंटरवल विधि का उपयोग किया। यह सामान्य रूप से ठीक काम करता है लेकिन AJAX रूपों के मामले में मुझे नहीं पता कि यह कुकीज़ के साथ पुराना समय क्यों भेजता है। क्या आप इससे मेरी सहायता कर सकते हैं? धन्यवाद। – gaurav

+1

@ गौराव - आप कुकीज में समय क्यों भेज रहे हैं? क्यों न सिर्फ इसे एक बार पकड़ो और फिर उस उपयोगकर्ता या सत्र के लिए इसका ट्रैक रखें? – Justin

+0

समझ गया, आप सभी को अपना मूल्यवान समय देने के लिए धन्यवाद। :) – gaurav

5

यह मेरा समाधान था।

_Layout फ़ाइल के प्रमुख (या सभी _Layout फ़ाइलें एकाधिक देखते हैं अगर) में, jQuery घोषणाओं के बाद, डाल:

@if (Session["UTCOffset"] == null) 
    { 
     <script type="text/javascript"> 
      $.post('/Home/SetUTC', { UTC: new Date().getTimezoneOffset() }, function (data) { location.reload(); }); 
     </script> 
    } 

होम नियंत्रक में (या जो भी नियंत्रक आप का उपयोग करें), डाल:

public JsonResult SetUTC(int UTC) 
     { 
      Session["UTCOffset"] = (-1*UTC).ToString(); 
      return Json(null); 
     } 

जब तारीख का समय समाप्त मुद्रण, (इस उदाहरण DateTime.Now में) का उपयोग करें:

(DateTime.Now).ToUniversalTime().AddMinutes(double.Parse((string)Session["UTCOffset"]??"-300.00")).ToString("MM-dd-yyyy") 

-300 केंद्रीय समय (मेरा समय क्षेत्र) है। यदि वे पहले पृष्ठ पर किसी भी तारीख पर हिट करते हैं, तो वे केंद्रीय समय में प्रदर्शित होंगे। लगभग एक सेकंड के लिए। फिर पृष्ठ को फिर से लोड किया जाएगा और चीजों को अपेक्षित के रूप में काम करना चाहिए।

मुझे यकीन है कि यह किसी भी तरह गैर MVC सेटअप के लिए अनुकूलित किया जा सकता हूँ, लेकिन मैं किसी और के लिए है कि छोड़ देंगे।

संबंधित मुद्दे