2010-11-16 7 views
5

में विंडोज टाइम जोन संक्षेप में क्या वे भी मौजूद हैं? मैं अपने यूरोपीय उपयोगकर्ताओं को "रोमांस मानक समय" प्रदर्शित करने और "सीईटी" के रूप में प्रदर्शित क्यों नहीं किया जा सकता है, यह समझाने की कोशिश कर रहा हूं कि मैं "रोमांस मानक समय" प्रदर्शित करने में वास्तव में बीमार हूं। अगर मैंने "रोमांस स्टैंडर्ड टाइम" का विश्लेषण किया और उन्हें "आरएसटी" के साथ प्रस्तुत किया जो उनके लिए अर्थहीन होगा, या संभवतः "रूसी मानक समय" या अन्य बकवास के रूप में उलझन में होगा।एएसपी.NET

क्या विंडोज़ से आम तौर पर स्वीकार्य संक्षेप प्राप्त करने का कोई तरीका नहीं है? मुझे ऐसा कुछ चाहिए जो उत्तरी अमेरिका, दक्षिण अमेरिका, यूरोप, अफ्रीका और एशिया में काम करता हो।

अद्यतन: यह कुल हैक है, मुझे पता है, लेकिन मुझे उन मामलों में से 9 0% मामले मिलेंगे जिनकी मुझे परवाह है। आप सुझाव देना चाहते हैं, मैं अभी भी सब कान हूँ,)

/// <summary> 
    /// Gets the current time zone abbreviation, corrected for Daylight Saving Time (if applicable) 
    /// </summary> 
    /// <param name="timeZoneId">The time zone id.</param> 
    /// <returns></returns> 
    public static string GetTZAbbrev(string timeZoneId) 
    { 
     var timeZoneInfos = TimeZoneInfo.GetSystemTimeZones(); 
     var abbrev = string.Empty; 

     foreach (var timeZoneInfo in timeZoneInfos) 
     { 
     if (timeZoneInfo.Id != timeZoneId) continue; 

     string[] words; 

     if (timeZoneInfo.IsDaylightSavingTime(DateTime.UtcNow)) 
     { 
      words = timeZoneInfo.DaylightName.Split(' ');   
     } 
     else 
     { 
      words = timeZoneInfo.StandardName.Split(' ');   
     } 

     foreach (var word in words) 
     { 
      abbrev += word[0]; 
     } 
     } 
     return abbrev; 
    } 
+0

नोडाटाइम अब avialble है http://nodatime.org/ – Jodrell

उत्तर

1

तुम हमेशा एक क्रॉसवॉक विधि का निर्माण और उन्हें अपने परिवर्तित कर सकते हैं। आपको बस हर बार एक सूची प्राप्त करने की आवश्यकता होगी, फिर इसे स्वयं क्रॉसवॉक करें। मुझे विंडोज़ में कुछ भी नहीं पता है, जो आपके लिए है, लेकिन आप इसे स्वयं करने के लिए बहुत सारे कोड नहीं बोल रहे हैं ...

+1

हाँ मुझे लगता है कि मैं कर सकता था। मैं सिर्फ गुस्सा आ रहा था कि माइक्रोसॉफ्ट में हमारे "दोस्तों" ने अभी तक इस स्पष्ट (आईएमएचओ) समस्या को हल नहीं किया है जो यूनिक्स सिस्टम पर "बस काम करता है"। –

6

ठीक है, यहां तक ​​कि "आम तौर पर स्वीकृत संक्षेप" भी वास्तव में नहीं हैं अच्छा विचार - क्योंकि वे इतने संदिग्ध हैं। यदि आप "ईडीटी" कहते हैं तो क्या आपका मतलब अमेरिका में पूर्वी डेलाइट टाइम या ऑस्ट्रेलिया में पूर्वी डेलाइट टाइम है?

अधिक आम तौर पर स्वीकृत तकनीकी समाधान ओल्सन (जोनिनॉन्फो) नामों जैसे "यूरोप/लंदन" को पहचानकर्ता के रूप में उपयोग करना है। उपयोगकर्ताओं को ये कैसे प्रस्तुत किया जाता है, यह एक अलग मामला है, लेकिन आम तौर पर मैं यूटीसी से अपने मानक (या वर्तमान; यह बदलता है) ऑफसेट के साथ विशेष समय क्षेत्र के लिए स्थान नामों के साथ उपयोगकर्ता इंटरफेस देखता हूं। उदाहरण के लिए Google कैलेंडर की समय क्षेत्र सेटिंग्स देखें।

यह वास्तव में अंतर्राष्ट्रीयकरण (या स्थानीयकरण, मुझे कभी याद नहीं है) उपयोगकर्ता के अनुकूल नामों के पहचानकर्ताओं का मामला है, हालांकि आप इसे करते हैं।

+1

सहमत हैं, लेकिन विंडोज मूल रूप से ओल्सन डीबी का उपयोग नहीं करता है। यह रजिस्ट्री में संग्रहित एचआई^एच^एच^एच डेटा का एक गुच्छा है, जहां तक ​​मैं कटौती करने में सक्षम हूं, केवल एपीआई के माध्यम से सुलभ है। –

+0

@ मार्क: लेकिन संक्षेप में इसका उपयोग करने के लिए इसका कोई लेना-देना नहीं है। यह सिर्फ विंडोज़ का मामला है जो समान पहचानकर्ताओं को ज़ोनइन्फो के रूप में उपयोग नहीं करता है। (जब मैं वी 1 को पूरा करने के लिए गोल करता हूं तो कुछ नोडा समय ठीक हो जाएगा।) –

+0

नोडा टाइम बहुत अच्छा लग रहा है, लेकिन मैं उस लंबे समय तक इंतजार नहीं कर सकता;) मुझे लगता है कि मैं सिर्फ टीजेड नाम पर विभाजित/जुड़ जाऊंगा और उस तरह संक्षेप बनाओ। यानी "मध्य यूरोपीय ग्रीष्मकालीन समय" => "सीईएसटी"। जब वे मुझे "आरएसटी" के बारे में चिल्लाते हैं, तो मुझे बस उन्हें समझा देना होगा कि यह एक तकनीकी बाधा है जिसके साथ उन्हें रहना होगा;) –