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

posted @ 2017-02-09 16:15  孤独の巡礼  阅读(1470)  评论(0编辑  收藏  举报