2009-09-09 9 views
12

क्या सिस्टम 3ime कोड प्राप्त करने के लिए कोई तरीका है System.imeZoneInfo.Local ?TimeZoneInfo संक्षिप्त नाम कैसे प्राप्त करें

उदा। पूर्वी डेलाइट समय आदि के बजाय ईडीटी

+0

यह ध्यान देने योग्य है कि एक मात्र दिन के उजाले नहीं निर्धारित नहीं कर सकता है या सिर्फ एक समय क्षेत्र की जानकारी से। उदाहरण के लिए, सुझाए गए रजिस्ट्री को देखते हुए, कोई भी देख सकता है कि सभी नामों में केवल "मानक" और "डेलाइट" शामिल नहीं है। इसलिए आपके पास कहीं भी डेटटाइम शामिल किए बिना सटीक उत्तर नहीं होगा (जो डेलाइट खाता है)। – user420667

उत्तर

9

दुर्भाग्यवश, ऐसा करने का कोई आसान तरीका नहीं है जिसे मैं जानता हूं। हालांकि, आप अपने आप को एक साथ रख सकते हैं। आपको अधिक रूपांतरण आप सिर्फ उन्हें मानचित्र शब्दकोश में प्लग सकता है की जरूरत है

string CurrentTimeZoneAbbreviation = System.TimeZoneInfo.Local.Abbreviation(); 

: यहाँ एक उदाहरण है: इस प्रकार

public static class TimeZoneInfoExtensions { 

     public static string Abbreviation(this TimeZoneInfo Source) { 

     var Map = new Dictionary<string, string>() 
     { 
      {"eastern standard time","est"}, 
      {"mountain standard time","mst"}, 
      {"central standard time","cst"}, 
      {"pacific standard time","pst"} 
      //etc... 
     }; 

     return Map[Source.Id.ToLower()].ToUpper(); 

    } 

} 

का प्रयोग करें।

TimeZoneInfo.Id [HKEY_LOCAL_MACHINE \ सॉफ़्टवेयर \ माइक्रोसॉफ्ट \ विंडोज एनटी \ CurrentVersion \ Time Zones] में दी गई कुंजी से मेल खाने वाली एक स्ट्रिंग होगी। यदि आप एक मिलान करने वाले डेटाबेस को ऑनलाइन देख सकते हैं, जिसमें एक ही आईडी और साथ ही संक्षेप भी शामिल हैं, तो जोड़े को त्वरित रूप से निकालने और आयात करने के लिए संभव होगा (उदाहरण के लिए नियमित अभिव्यक्तियों के साथ) और उन्हें मानचित्र शब्दकोश में छोड़ दें। इसके लिए

var abbr = System.TimeZoneInfo.Local.TimeZoneAbbr(); 

और सहायक:

+1

'आईडी' के लिए संभावित मान' HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Time Zone' के अंतर्गत रजिस्ट्री में पाए जा सकते हैं (वे http://www.timeanddate.com/library में नामों से अलग हैं/संक्षेप/timezones /) – dtb

+0

@ डीटीबी: धन्यवाद। –

1

आप की तरह कुछ लिख सकते हैं

public static class ConvertionHelper 
{ 
    public static String TimeZoneAbbr(this TimeZoneInfo zone) 
    { 
     var zoneName = zone.Id;/* zone.IsDaylightSavingTime(DateTime.UtcNow) 
      ? zone.DaylightName 
      : zone.StandardName;*/ 
     var zoneAbbr = zoneName.CapitalLetters(); 
     return zoneAbbr; 
    } 

    public static String CapitalLetters(this String str) 
    { 
     return str.Transform(c => Char.IsUpper(c) 
      ? c.ToString(CultureInfo.InvariantCulture) 
      : null); 
    } 

    private static String Transform(this String src, Func<Char, String> transformation) 
    { 
     if (String.IsNullOrWhiteSpace(src)) 
     { 
      return src; 
     } 

     var result = src.Select(transformation) 
      .Where(res => res != null) 
      .ToList(); 

     return String.Join("", result); 
    } 
} 
संबंधित मुद्दे