2011-12-21 7 views
10

मुझे अपने एएसपी.नेट के लिए एशिया/ढाका या जीएमटी +6 टाइमज़ोन में डिफ़ॉल्ट टाइमज़ोन सेट करने की आवश्यकता है। लेकिन मुझे इसे वैश्विक रूप से बदलने का कोई तरीका नहीं मिल रहा है। टाइमकोन जानकारी प्राप्त करके और प्रत्येक बार जब मुझे डेटटाइम ऑब्जेक्ट की आवश्यकता होती है तो सही समय की गणना करके ऐसा करने के लिए स्टैक ओवरफ्लो और शेष वेब पर बहुत सारे संदर्भ हैं।एएसपीनेट एप्लिकेशन के लिए समय क्षेत्र को कैसे बदलें

लेकिन मेरा विश्वास करो, मैं इस तरह से ऐसा नहीं करना चाहता हूं। तो मुझे ऐसा कोई सुझाव न दें। मैं समय-समय पर एशिया/ढाका या जीएमटी +6 को वेब.कॉन्फिग से सेट करना चाहता हूं। (इसी प्रकार हम php.ini के साथ php में करते हैं) ताकि प्रत्येक बार मुझे डेटटाइम ऑब्जेक्ट की आवश्यकता हो, समय के साथ मेरे टाइमज़ोन के साथ मूल्यांकन किया जाता है इससे कोई फर्क नहीं पड़ता कि सर्वर के लिए टाइमज़ोन क्या है।

क्या यह संभव है? यदि संभव हो तो कैसे ?? समाधान के लिए अग्रिम धन्यवाद :)

+4

* क्यों * नहीं आप चीजों को ठीक से करना चाहते हैं? ध्यान रखें कि 'डेटटाइम' में * एक अंतर्निहित समय क्षेत्र नहीं है। (यह कुछ तरीकों से एक सुंदर अजीब प्रकार है।) आपको * आमतौर पर * (लेकिन हमेशा नहीं) यूटीसी में सबकुछ रखना चाहिए, जब यह उपयोगकर्ता से या उसके बाद जा रहा है - आप उस सामान्य पैटर्न का पालन क्यों नहीं करना चाहते हैं? –

+1

समस्या यह है कि मेरे पास 100 एएसपीएक्स पृष्ठों पर कई डेटाटाइम ऑब्जेक्ट हैं, और उन्हें स्थानीय टाइमज़ोन में प्रस्तुत करने की आवश्यकता है। मैं यूटीसी में हर बार रखने के खिलाफ नहीं हूं। लेकिन मुझे सभी पृष्ठों को बदलने के बिना एएसपीएक्स पृष्ठों में स्थानीय टाइमज़ोन में समय प्रस्तुत करने के लिए एक समाधान की आवश्यकता है। –

+1

ऐसा लगता है कि आपको वास्तव में * डेटटाइम रेंडरिंग कोड डालने के लिए एक केंद्रीय स्थान की आवश्यकता है, जिसे आप * हर जगह * कॉल करते हैं, आपको 'डेटटाइम' प्रस्तुत करने की आवश्यकता होती है। आपको अपने सभी 100 पृष्ठों को एक बार बदलने की आवश्यकता हो सकती है, लेकिन फिर आपको किसी भी स्थान पर परिवर्तन की आवश्यकता/समय की आवश्यकता के बारे में कोई और परिवर्तन करने की आवश्यकता होगी। –

उत्तर

8

क्षमा करें .NET में वैश्विक स्तर पर समय क्षेत्र बदलने के लिए कोई रास्ता नहीं है।

आपके पास एकमात्र तरीका है जो आपके सर्वर का टाइमज़ोन बदलना है या अपने सभी कोड को फिर से लिखना है।

सबसे अच्छा अभ्यास सिस्टम समय क्षेत्र पर भरोसा नहीं करना है (कभी भी DateTime.Now का उपयोग न करें)।

आपको यूटीसी तिथियों के रूप में सभी तारीखों को संभालना चाहिए और फिर उपयोगकर्ताओं को प्रदर्शित करते समय एक विशिष्ट क्षेत्र में कनवर्ट करना चाहिए।

भले ही आप अपने एएसपी.NET अनुप्रयोग में टाइमज़ोन को संभालने में कामयाब हों, फिर भी SQL सर्वर पर टाइमज़ोन हैं, उदाहरण के लिए GETTIME मज़ेदार। यदि आपका आवेदन पूरी तरह से यूटीसी में लिखा गया है, तो आपका SQL सर्वर फ़ंक्शन भी काम करेगा।

+0

वैश्वीकरण सेटिंग बदल नहीं जाएगी कि अधिकांश देशों में हाइलाइट किए गए डेटटाइम ऑब्जेक्ट को कितने टाइमज़ोन होंगे, इसलिए यह नहीं पता कि किस का उपयोग करना है। – davidsleeps

+1

सुझाव के लिए धन्यवाद, ऐसा लगता है कि यह संस्कृति क्षेत्र के अनुसार प्रारूप को बदलता है। लेकिन समय ऑफसेट नहीं है। मैं utc के रूप में सभी तिथियों को संभालने के लिए सहमत हूं, लेकिन जब भी मैं प्रदर्शित करता हूं उन्हें एक तरह से परिवर्तित करने की आवश्यकता होती है। मेरे ऐप में, मेरे पास पहले से ही सैकड़ों डेटटाइम ऑब्जेक्ट्स हैं। मैं इन सभी को खोजने और उन्हें एक विधि विधि द्वारा एक-एक करके बदलने के अलावा अन्य तरीकों की तलाश में हूं। : एस: एस –

+0

मेरे आवेदन के लिए एक ही समाधान की तलाश में बहुत मदद करता है। http://stackoverflow.com/questions/14293858/how-to-set-default-time-zone-in-asp-net-plplication में लगभग एक ही प्रश्न पूछा जाता है। – Pravin

2

आप समय क्षेत्र बदलने के कर सकते हैं ... और जाओ दिनांक

DateTime utcTime = DateTime.UtcNow; 
    TimeZoneInfo myZone = TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 
    DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); 
    Str.Append(custDateTime.ToString()); 
1

मैं अनुदेश के साथ एक समस्या है:

TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"); 

तो ... मैं एक व्यक्तिगत TimeZoneInfo पैदा करते हैं।

यहाँ मेरी कोड ...

public static DateTime DateNow() 
     { 
      DateTime utcTime = DateTime.UtcNow; 
      TimeZoneInfo myZone = TimeZoneInfo.CreateCustomTimeZone("COLOMBIA", new TimeSpan(-5, 0, 0), "Colombia", "Colombia"); 
      DateTime custDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, myZone); 
      return custDateTime; 
     } 
संबंधित मुद्दे