0

我希望这次转换:Mon, 25 03 2013 00:00:00 GMT转换为美国东部标准时间。我知道这已在此处发布:C# 中的时区转换,但我仍然遇到错误,必须对不完全正确的字符串执行某些操作。

这是我的代码:

var dateString = "Mon, 25 03 2013 00:00:00 GMT";
var date = Convert.ToDateTime(dateString);
var result = TimeZoneInfo.ConvertTime(date, TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"));
Console.WriteLine(result);

这是我的错误:

Unhandled Exception: System.FormatException: String was not recognized as a valid DateTime.
at System.DateTime.Parse (System.String s, IFormatProvider provider, DateTimeStyles styles) [0x00000] in :0 
at System.DateTime.Parse (System.String s, IFormatProvider provider) [0x00000] in :0 
at System.DateTime.Parse (System.String s) [0x00000] in :0 

在 System.Convert.ToDateTime(System.String 值)[0x00000] 在:0 在 Program.Main()[0x00000] 在:0

我曾尝试将日期从更改为03Mar但我什至无法让它工作。我也尝试过其他论坛中的代码,只是想看看它是否有效,但我没有成功。我完全理解代码试图做什么,但我只是不明白为什么会抛出错误。

任何帮助将非常感激!谢谢!

4

3 回答 3

1

尝试将您的日期字符串解析为以下内容:

 DateTime date = DateTime.ParseExact(datestring, "ddd dd MMM yyyy h:mm tt zzz", CultureInfo.InvariantCulture);
于 2013-07-09T21:04:07.010 回答
0
var dateString = "Mon, 25 03 2013 00:00:00 GMT";

应该是这样的:

var dateString = "Mon, 25 Mar 2013 00:00:00 GMT";

编辑:固定月份。

于 2013-07-09T21:04:57.963 回答
0

如果字符串总是以 GMT 结尾,那么您可以使用ParseExact

var dateString = "Mon, 25 03 2013 00:00:00 GMT";
var date = DateTime.ParseExact(dateString,
                               "ddd, dd MM yyyy hh:mm:ss GMT", 
                               CultureInfo.InvariantCulture);
var result = TimeZoneInfo.ConvertTime(date, TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"));
于 2013-07-09T21:09:32.920 回答