在转换为日期时获取格式异常
本文关键字:获取 格式 异常 日期 转换 | 更新日期: 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" - 您的字符串是什么格式