how to get TimeZoneInfo short name

前端 未结 2 876
礼貌的吻别
礼貌的吻别 2021-02-13 17:41

Is there any method to get the 3 char code from System.TimeZoneInfo.Local ?

e.g. EDT instead of Eastern Daylight time etc.

2条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-13 18:08

    You can write something like:

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

    And the helper for it:

    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 transformation)
        {
            if (String.IsNullOrWhiteSpace(src))
            {
                return src;
            }
    
            var result = src.Select(transformation)
                .Where(res => res != null)
                .ToList();
    
            return String.Join("", result);
        }
    }
    

提交回复
热议问题