I have my RSS Feed setup using System.ServiceModel.Syndication library. The SyndicationItem class in the same library is used to render the item and it's sub nodes for each post in the RSS Feeds. However the element in my feed is as shown below (Refer Screenshot below).
As you can see my pubdate shows Z as offset but i want it to show +0000 because we want to integrate an Emailbroadcast tool with our RSS Feed which needs my Feed to be RFC 882 compatible. I went ahead and debugged PublicFeed Class which i had extended (necessitated by Sitecore CMS for adding additional fields). During Debugging i saw that syndicationItem.publishDate has offset values as +0000 but that is not rendered onto my final feed. Would appreciate some help. Below is the code which renders Date.
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;
}