• c#如何解析时区字符串


    常见时区缩写可参考:

    http://time.123cha.com/knowledge/6.html

    常见时区缩写如下:

      IDLE +12:00 国际日期变更线,东边 
      NZDT +13:00 新西兰夏时制 
      NZST +12:00 新西兰标准时间 
      NZT +12:00 新西兰时间 
      AESST +11:00 澳大利亚东部标准夏时制 
      ACSST +10:30 中澳大利亚标准夏时制 
      CADT +10:30 中澳大利亚夏时制 
      SADT +10:30 南澳大利亚夏时制 
      AEST +10:00 澳大利亚东部标准时间 
      EAST +10:00 东澳大利亚标准时间 
      GST +10:00 关岛标准时间,俄罗斯时区 9 
      LIGT +10:00 澳大利亚墨尔本 
      SAST +09:30 南澳大利亚标准时间 
      CAST +09:30 中澳大利亚标准时间 
      AWSST +09:00 澳大利亚西部标准夏时制 
      JST +09:00 日本标准时间,(俄罗斯时区 8) 
      KST +09:00 韩国标准时间 
      WDT +09:00 西澳大利亚夏时制
      SST +02:00 瑞典夏时制 
      BST +01:00 英国夏时制 
      CET +01:00 中欧时间
      FST +01:00 法国夏时制 
      MET +01:00 中欧时间 
      MEWT +01:00 中欧冬时制
      NDT -02:30 纽芬兰(Newfoundland)白昼时间
      ADT -03:00 大西洋白昼时间 
      AWT -03:00 (未知) 
      BRT -03:00 Brasilia 时间 
      NFT -03:30 纽芬兰(Newfoundland)标准时间 
      NST -03:30 纽芬兰(Newfoundland)标准时间 
      AST -04:00 大西洋标准时间(加拿大) 
      ACST -04:00 Atlantic/Porto Acre 夏令时 
      ACT -05:00 Atlantic/Porto Acre 标准时间 
      EDT -04:00 东部白昼时间 
      CDT -05:00 中部白昼时间 
      EST -05:00 东部标准时间 
      CST -06:00 中部标准时间 
      MDT -06:00 山区白昼时间 
      MST -07:00 山区标准时间 
      PDT -07:00 太平洋白昼时间 
      AKDT -08:00 阿拉斯加白昼时间 
      PST -08:00 太平洋标准时间 
      YDT -08:00 Yukon 白昼时间 
      AKST -09:00 阿拉斯加标准时间 
      HDT -09:00 夏威仪/阿拉斯加白昼时间 
      YST -09:00 Yukon 标准时 
      MART -09:30 马克萨司群岛时间 
      AHST -10:00 夏威夷-阿拉斯加标准时间
      HST -10:00 夏威夷标准时间 
      CAT -10:00 中阿拉斯加时间 
      NT -11:00 州时间(Nome Time) 
      IDLW -12:00 国际日期变更线,西边

    那如何解析如 "IDLW -12:00" 这样的字符串呢,其实很简单,把代码贴在下面以做积累:

     1  /// <summary>
     2         /// 从字符串转化timezone
     3         /// </summary>
     4         /// <param name="timezone">如: PST -08:00</param>
     5         /// <returns></returns>
     6         static bool TryParseTimezone(string timezone,out TimeSpan timeSpan)
     7         {
     8             if (string.IsNullOrEmpty(timezone))
     9             {
    10                 Debug.Log("<color=red>timezone is empty</color>");
    11                 timeSpan = new TimeSpan();
    12                 return false;
    13             }
    14 
    15             string[] words = timezone.Split(new char[] { ' ', ':' }, StringSplitOptions.RemoveEmptyEntries);
    16             if (words.Length != 3)
    17             {
    18                 Debug.Log("<color=red>timezone is not in right format like [KST +09:00], timezone: " + timezone + "</color>");
    19                 timeSpan = new TimeSpan();
    20                 return false;
    21             }
    22 
    23             int hour;
    24             if (!int.TryParse(words[1].TrimStart('+', '-'), out hour))
    25             {
    26                 Debug.Log("<color=red>timezone is not in right format like [KST +09:00], timezone: " + timezone + "</color>");
    27                 timeSpan = new TimeSpan();
    28                 return false;
    29             }
    30 
    31             int minute;
    32             if (!int.TryParse(words[2], out minute))
    33             {
    34                 Debug.Log("<color=red>timezone is not in right format like [KST +09:00], timezone: " + timezone + "</color>");
    35                 timeSpan = new TimeSpan();
    36                 return false;
    37             }
    38 
    39             bool negative = words[1].StartsWith("-");
    40             hour = negative ? -hour : hour;
    41             minute = negative ? -minute : minute;
    42             timeSpan = new TimeSpan(hour, minute, 0);
    43             return true;
    44         }
    TryParseTimezone

    转载请注明出处:http://www.cnblogs.com/jietian331/p/6382630.html

  • 相关阅读:
    kafka环境搭建
    zookeeper环境搭建学习
    linux时间不准
    (转)Mac osx 下安装iTerm2,并使用rz sz上传下载(附homebrew配置)
    安装mariadb数据库
    mydumper 安装使用
    granfa 安装,配置prometheus数据源
    prometheus 普罗米修斯安装
    Docker常用命令
    winform 一个点击事件触发另一个点击事件
  • 原文地址:https://www.cnblogs.com/jietian331/p/6382630.html
Copyright © 2020-2023  润新知