.net c# 字符串转换为日期时间 GMT+0 或 UTC(来自任何/未知格式)



我需要从RSS提要解析并添加到数据库日期。有一个问题,一个有"星期三,08 May 2013 17:03:44 EDT",其他与EST,其他与CET,其他"星期一,23 Dec 2013 21:45:32 +0200"。分析在收到 EDT 时失败。这是因为我使用了:

CultureInfo provider = CultureInfo.InvariantCulture;
var format = "ddd, dd MMM yyyy hh:mm:ss EST";
DateTime postTime;
//<... make f.pubDate to have date string ...>
var convertionResult = DateTime.TryParse(f.pubDate, out postTime);
if (!convertionResult)
{
    postTime = DateTime.ParseExact(f.pubDate, format, provider);
    //<...>
};

有没有通用的方法可以做到这一点,我肯定错过了一些:)

谢谢!

我不相信 .NET 框架中有任何内容可以解析时区缩写 - 并且有相当充分的理由,因为它们不是全局唯一的。老实说,RSS使用这种脑死亡的日期/时间格式真是太可惜了。

您最好有一个从"时区缩写"到"时区偏移量"的查找表。

自定义日期和时间格式的"zzz"部分可能会解析"+0200"部分 - 使用 Noda Time,您可以显式指定。如果 .NET 没有立即处理它,您可以在正确的位置添加一个冒号,此时就可以了。

另一种选择是找到一个现有的 RSS 解析器来为您完成所有这些工作 - 我相信您不是第一个面临此问题的人。

好的,我找到了一个解决方案。

这个项目代码/想法有助于解决这个问题。这家伙 - Ashot Aslanyan - 已经将转换器写入时间戳(以及整个 RSS 阅读:D器)。

来源于此:http://rssreadercs.codeplex.com/SourceControl/latest#trunk/RSSReader/RssReader/RSSReader.cs

最新更新