您的位置:首页 > 编程语言 > C#

c#如何解析时区字符串

2017-02-09 16:15 246 查看
常见时区缩写可参考:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: