根据城市所在世界计算该城市当前时间
并处理了某些城市夏令时问题
1 private DateTime GetDatetime(TimeZoneEntity timeZone) 2 { 3 try 4 { 5 DateTime date = DateTime.Now.ToUniversalTime(); 6 date = date.AddHours(timeZone.TimeZone); 7 //判断城市是否启用夏令时,如果启用需要+1小时 8 var list = TimeZoneInfo.GetSystemTimeZones(); 9 foreach (var info in list) 10 { 11 Console.WriteLine("UTC offset:{0}", info.BaseUtcOffset); 12 if (timeZone.TimeZone == info.BaseUtcOffset.Hours) 13 { 14 //Console.WriteLine("find :" + info.DisplayName); 15 if (info.DisplayName.ToString().Contains(timeZone.CityName)) 16 { 17 if (info.IsDaylightSavingTime(DateTime.Now)) 18 { 19 date = date.AddHours(1); 20 } 22 } 23 } 24 } 25 return date; 26 } 27 catch (Exception) 28 { 29 throw; 30 } 31 } 32 33 34 public class TimeZoneEntity 35 { 36 public int Id { get; set; } 37 public string CountryName { get; set; } 38 public string CityNameEN { get; set; } 39 public string CityName { get; set; } 40 public int TimeZone { get; set; } 41 }