我正在尝试从xml中检索一些字符串并将其转换为等效的日期,但它没有用完。以下是我正在使用的代码:
var Pubdate = DateTime.Parse((sourcei.Element("pubDate").Value).Replace("\t","").Replace("\n",""));
这是我要解析的实际标记:
<pubDate>
Mon, 09 Sep 2013 13:47:57 EDT
</pubDate>
(是的,原始标签中有空格)。
那么,出了什么问题?
答案 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; - 你的字符串是什么格式