C# 转换日期时间格式MM/dd/yy H:MM:ss GMT+;5.0至UTC

C# 转换日期时间格式MM/dd/yy H:MM:ss GMT+;5.0至UTC,c#,valueconverter,C#,Valueconverter,我想将2015年3月13日11:26:26 GMT-6.00转换为UTC。我知道如何转换,如果是在某个标准时间,我已经使用以下代码转换了它 string dateTime = "13/MAR/2015 11:26:26"; TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Cental standard Time"); TimeZoneInfo.ConvertTimeToUtc(Convert.ToDateTime(d

我想将2015年3月13日11:26:26 GMT-6.00转换为UTC。我知道如何转换,如果是在某个标准时间,我已经使用以下代码转换了它

 string dateTime = "13/MAR/2015 11:26:26";    
 TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Cental standard Time");
 TimeZoneInfo.ConvertTimeToUtc(Convert.ToDateTime(dateTime), zone);  
但我想将2015年3月13日11:26:26 GMT-6.00转换为UTC。请帮助我。

您可以使用

比如说

        string dateTime = "13/MAR/2015 11:26:26";
        TimeZoneInfo zone = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
        var local = TimeZoneInfo.ConvertTimeToUtc(Convert.ToDateTime(dateTime), zone);
        var offcet = zone.GetUtcOffset(local);
        string output = local + " GMT " + offcet.Hours;

GMT等于UTC(虽然不完全相同),因此您可以将字符串中的GMT替换为UTC并从此处解析时区。

解析该字符串的问题是无法识别时区名称,并且偏移量的格式为
-6.00
,而不是
-6:00

删除时区名称,并更改偏移格式,您可以解析日期,然后可以使用
ToUniversalTime
方法将其转换为UTC:

DateTime t = DateTime.Parse(dateTime.Replace(" GMT ", " ").Replace(".", ":"));
DateTime utc = t.ToUniversalTime();

你不可能一下子做到这一点。问题是日期时间字符串的格式包含不支持格式的时区偏移组件:
-6.00
,而不是
-06:00
。如果不是这样,您可以通过以下方式直接解析字符串:

var myDateTime = "13/MAR/2015 11:26:26 GMT -06:00";
var fmt = "dd/MMM/yyyy HH:mm:ss 'GMT' zzz";
var dto = DateTimeOffset.ParseExact(myDateTime, fmt, CultureInfo.InvariantCulture);
var utcTime = dto.UtcDateTime;
您必须通过执行以下操作来解决此问题:

var myDateTime = "13/MAR/2015 11:26:26 GMT -6.00";
var fmt = "dd/MMM/yyyy HH:mm:ss 'GMT' zzz";
var dto = DateTimeOffset.ParseExact(myDateTime.Replace(".", ":")), fmt, CultureInfo.InvariantCulture);
var utcTime = dto.UtcDateTime;

如果我理解正确,您的问题基本上是如何将字符串转换为日期时间,对吗?考虑查看DATETIME.PARSE,特别是这个重载:不是这样。我必须处理GMT-600,它必须转换为UTC与日期时间字符串的最大问题,即偏移是以不支持的格式指定的。它是
-6.00
而不是
-06:00
,这不允许直接使用
DateTimeOffset.ParseExact
解析它。这里我不知道---标准时间,如果我知道确切的标准时间,我将处理它,我想要这个格式字符串dateTime=“13/MAR/2015 11:26:26 GMT-6.00”只需将GMT和offcet添加到字符串中,如以下字符串dateTime=“13/MAR/2015 11:26:26”;TimeZoneInfo zone=TimeZoneInfo.FindSystemTimeZoneById(“东京标准时间”);var local=TimeZoneInfo.ConvertTimeToUtc(Convert.ToDateTime(dateTime),zone);var offcet=区域GetUtcOffset(本地);字符串输出=本地+GMT+offcet.小时;我有一个系统,有一个例外