需求:参数,一个日期字符串,不带时区的那种,一个TimeZoneID。将其转换为UTC时间。
//可以获取所有的TimeZoneID IList<TimeZoneInfo> lst = TimeZoneInfo.GetSystemTimeZones(); //当日期格式为 2021-05-31T09:00:00Z 时会转换异常。 string str = "5/18/2021 7:00 AM"; //目前尚未研究清楚这个是什么时间格式 var aa = Convert.ToDateTime("2021-05-31T09:00:00Z").ToString("M/d/yyyy hh:mm:ss tt", System.Globalization.DateTimeFormatInfo.InvariantInfo); Console.WriteLine(aa); //5/31/2021 05:00:00 PM //(GMT-04:00) Eastern Time (US and Canada) var esternTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); if (DateTime.TryParse(str, out DateTime dt)) { //var formattedDate = new DateTime(dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute, dt.Second, DateTimeKind.Unspecified); ///获取对应的utc时间 var utcStartTime = TimeZoneInfo.ConvertTimeToUtc(dt, esternTimeZone); var result = utcStartTime.ToString("yyyy-MM-ddTHH:mm:ssZ"); Console.WriteLine(result); //2021-05-18T11:00:00Z }