RSS Feed中的<pubdate>元素将XML渲染偏移量设置为Z而不是+0000

时间:2018-02-28 13:57:40

标签: c# rss sitecore syndication-feed

我使用 System.ServiceModel.Syndication 库设置RSS Feed。同一个库中的 SyndicationItem 类用于呈现项目及其RSS源中每个帖子的子节点。但是,我的Feed中的元素如下所示(请参阅下面的屏幕截图)。

My Current Feed

正如您所看到的,我的pubdate将 Z 显示为偏移但我希望它显示+0000,因为我们希望将Emailbroadcast工具与我们的RSS Feed集成,这需要我的Feed与RFC 882兼容。我继续调试 PublicFeed 类,我已经扩展了(必须由Sitecore CMS添加其他字段)。在调试期间,我看到 syndicationItem.publishDate 的偏移值为+0000,但是没有渲染到我的最终Feed中。会感激一些帮助。下面是呈现日期的代码。

private void RenderDate(Item item, FeedRenderingParameters feedParams, SyndicationItem syndicationItem)
{
    DateTime universalTime = DateUtil.ToUniversalTime(DateUtil.IsoDateToDateTime(item[feedParams.DateField], DateTime.MaxValue));
    if (universalTime == DateTime.MaxValue)
    {
        string logWarning = "RSS couldn't parse date from the '{0}' field on the {1} item. Using item updated date instead.";
        Log.Warn(logWarning, (object)this);
        universalTime = DateUtil.ToUniversalTime(item.Statistics.Updated);
    }
    DateTimeOffset dateTimeOffset;
    try
    {
        if (universalTime == DateTime.MinValue)
            dateTimeOffset = DateTimeOffset.MinValue;
        else if (universalTime == DateTime.MaxValue)
        {
            dateTimeOffset = DateTimeOffset.MaxValue;
        }
        else
        {
            DateTime serverTime = DateUtil.ToServerTime(universalTime);
            dateTimeOffset = new DateTimeOffset(serverTime, Settings.ServerTimeZone.GetUtcOffset(serverTime));
        }
    }
    catch (ArgumentOutOfRangeException ex)
    {
        DateTime serverTime = DateUtil.ToServerTime(DateTime.UtcNow);
        dateTimeOffset = new DateTimeOffset(serverTime, Settings.ServerTimeZone.GetUtcOffset(serverTime));
    }

    syndicationItem.PublishDate = dateTimeOffset;            
}

0 个答案:

没有答案