首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >让SyndicationFeed LastUpdatedTime达到毫秒级

让SyndicationFeed LastUpdatedTime达到毫秒级
EN

Stack Overflow用户
提问于 2021-02-09 08:25:48
回答 1查看 28关注 0票数 0

我正在通过下面的方法读取SyndicationFeed。

代码语言:javascript
复制
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = new NetworkCredential("username", "password");

// Create the reader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.XmlResolver = resolver;

XmlReader reader = XmlReader.Create(feedUrl, settings);
SyndicationFeed feed = SyndicationFeed.Load(reader);

但是,在Feed中,我需要最多毫秒的上次更新时间,但代码只返回给我最多几秒的部分。

feed.LastUpdatedTime为DateTimeOffset,取值为{06/02/2021 00:06:30 +00:00}

代码语言:javascript
复制
// where as this is the data I get back in Postman
<updated>2021-02-06T00:06:30.652Z</updated>

您知道如何从atom提要中获取毫秒部分吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-10 17:44:12

我在回答我自己的问题,基本上,我们没有从Syndication Feed (它总是返回0毫秒,看起来像SyndicationFeed类中的一个bug )获得这些数据,所以我们需要直接解析XML并从那里提取数据。这是我的解决方案,供任何其他寻找类似问题的人使用。

代码语言:javascript
复制
DateTime GetUpdatedDateTime(string feeddURl)
{
    const string CustomUtcDateTimeFormat = "yyyy-MM-dd HH:mm:ss:fff"; // 2021-02-09 01:23:34:651

    using(XmlReader reader = XmlReader.Create(feedUrl))
    while (reader.Read())
    {
       if (reader.Name == "updated")
       {
          try
          {
             var lastUpdatedDateTime = reader.ReadElementContentAsString();
             return DateTime.ParseExact(lastUpdatedDateTime, CustomUtcDateTimeFormat);
          }
          catch(Exception ex)
          {
              return DateTime.MinValue;
          }
       }
    }
    return DateTime.MinValue;
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66111303

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档