c#如何解析時區字符串

常見時區縮寫可參考:html

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

常見時區縮寫以下:spa

  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 國際日期變動線,西邊code

 

那如何解析如 "IDLW -12:00" 這樣的字符串呢,其實很簡單,把代碼貼在下面以作積累:orm

 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.htmlhtm

相關文章
相關標籤/搜索