【问题标题】:Parse date string from xml feed to DateTime将日期字符串从 xml 提要解析为 DateTime
【发布时间】:2012-01-16 16:17:24
【问题描述】:

我有几个不同的 xml 提要,我将它们合并到一个“提要”中,用于我正在开发的网站 (c#)。大多数订阅源都遵循 rss2.0 标准,即新闻订阅源和 Facebook 订阅源。但是,我也在拉推特,据我所知,他们似乎使用自己的标准。我在从 facebook 和 twitter 中提取发布日期时遇到问题,因为它们的格式略有不同。

facebook = <lastBuildDate>Thu, 12 Jan 2012 00:06:54 +0000</lastBuildDate>

推特 = <created_at>Wed Jan 11 23:48:15 +0000 2012</created_at>

我不太清楚从哪里开始,谢谢你的帮助:)

【问题讨论】:

    标签: c# xml xml-parsing


    【解决方案1】:

    如果格式无法识别,您将需要执行 DateTime.ParseExact。

    使用以下类:

    public static class Extensions
    {
        public static DateTime ParseTwitterDateTime(this string date)
        {
            const string format = "ddd MMM dd HH:mm:ss zzzz yyyy";
            return  DateTime.ParseExact(date, format, CultureInfo.InvariantCulture);
        }
    
        public static DateTime ParseFacebookDateTime(this string date)
        {
            const string format = "ddd, dd MMM yyyy HH:mm:ss zzzz";
            return  DateTime.ParseExact(date, format, CultureInfo.InvariantCulture);
        }
    }
    

    您应该能够使用字符串的扩展方法解析值。

    用作参考:Twitter date parsing in C#

    【讨论】:

      【解决方案2】:

      如果您知道它来自 facebook,并且 facebook 始终使用相同的日期格式,您只需解析字符串的组成部分(星期几、月份、时间等),将它们重新排列为C# 识别的顺序,然后使用 DateTime.Parse() 将它们转换为日期。您必须为每个提要使用不同的重新排列方法。

      例如

      Thu, 12 Jan 2012 00:06:54 +0000
      

      变成

      Jan 12, 2012 00:06:54 +0000
      

      或类似的东西(不确定 C# 是否会真正解析它,所以根据需要进行修改)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多