C# DateTime 将日期字符串格式化为带时区的日期格式
需求:参数,一个日期字符串,不带时区的那种,一个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
}