转换为日期时获取FormatException

时间:2013-09-09 18:31:46

标签: c# windows-phone-7

我正在尝试从xml中检索一些字符串并将其转换为等效的日期,但它没有用完。以下是我正在使用的代码:

var Pubdate = DateTime.Parse((sourcei.Element("pubDate").Value).Replace("\t","").Replace("\n",""));

这是我要解析的实际标记:

<pubDate>

                        Mon, 09 Sep 2013 13:47:57 EDT 

                </pubDate>

(是的,原始标签中有空格)。

那么,出了什么问题?

3 个答案:

答案 0 :(得分:1)

EDT导致它失败。

请参阅:Parse DateTime with time zone of form PST/CEST/UTC/etc

如果从字符串中删除“EDT”,我不会收到错误。

您可以使用以下方式进行测试:

var pubDate = DateTime.Parse( "Mon, 09 Sep 2013 13:47:57 EDT" );

var pubDate = DateTime.Parse( "Mon, 09 Sep 2013 13:47:57" );

答案 1 :(得分:0)

您不应该使用DateTime.Parse()方法直接解析,因为如果您的系统日期无法使用您的日期字符串格式进行映射,那么可能会导致意外错误。所以您必须尝试这种方式。

DateTime dateValue;
DateTime dateValue1;
CultureInfo culture = CultureInfo.CurrentCulture;
DateTimeStyles styles = DateTimeStyles.None;
DateTime.TryParse("" + sourcei.Element("pubDate").Value.Trim(), new CultureInfo("en-US"), styles, out dateValue);
dateValue1 = DateTime.Parse(""+dateValue.ToShortDateString());
StringBuilder dateValue2 = new StringBuilder("" + dateValue1.ToString("MM/dd/yyyy"));
dateValue2 = dateValue2.Replace("-", "/");

注意:这里我以DateString格式为例“MM / dd / yyyy”。所以你需要根据你的要求改变这种格式。

答案 2 :(得分:-1)

尝试使用Parse exact。

DateTime.ParseExact(STRING,&#34; dd.MM.yyyy&#34;,System.Globalization.CultureInfo.InvariantCulture);

&#34; DD.MM.YYYY&#34; - 你的字符串是什么格式