在转换为日期时获取格式异常

本文关键字:获取 格式 异常 日期 转换 | 更新日期: 2023-09-27 18:30:39

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

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

这是我尝试解析的实际标签:

<pubDate>
                        Mon, 09 Sep 2013 13:47:57 EDT 
                </pubDate>

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

那么,出了什么问题呢?

在转换为日期时获取格式异常

EDT 导致它失败。

请参阅: 使用格式为 PST/CEST/UTC/等的时区解析日期时间

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

您可以使用以下内容进行测试:

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

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

您不应该直接使用 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("-", "/");

注意:在这里,我以日期字符串格式为例是"MM/dd/yyyy"。因此,您需要根据需要更改此格式。

尝试使用 Parse exact。

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

"dd.MM.yyyy" - 您的字符串是什么格式