0

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

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

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

<pubDate>

                        Mon, 09 Sep 2013 13:47:57 EDT 

                </pubDate>

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

那么,怎么了?

4

3 回答 3

1

EDT 导致它失败。

请参阅:使用 PST/CEST/UTC/等形式的时区解析 DateTime

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

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

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

var pubDate = DateTime.Parse( "Mon, 09 Sep 2013 13:47:57" );
于 2013-09-09T18:40:08.070 回答
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”。因此您需要根据您的要求更改此格式。

于 2013-09-10T06:25:39.903 回答
-1

尝试使用 Parse exact。

DateTime.ParseExact(STRING, "dd.MM.yyyy", System.Globalization.CultureInfo.InvariantCulture);

“dd.MM.yyyy” - 你的字符串是什么格式

于 2013-09-09T18:39:07.460 回答