关于RSS信息按时间排序的代码
来源:互联网 发布:海洋最深处 知乎 编辑:程序博客网 时间:2024/05/29 16:44
/// <summary>
/// 按照发布日期为Rss条目信息排序,并且输出最近N天离当前时间最远的一天的序号
/// </summary>
/// <param name="recentDays"></param>
/// <param name="rssItem"></param>
/// <returns></returns>
private static int[] FiterByDateTime(int recentDays, List<RssItemOriInfo> rssItem, out int remoteDayIndexInRecentDays)
{
remoteDayIndexInRecentDays = 0;
if (rssItem == null)
{
return null;
}
List<KeyValuePair<int, DateTime>> pairList = new List<KeyValuePair<int, DateTime>>();
for (int i = 0; i < rssItem.Count; i++)
{
String dateStr = rssItem[i].PubDate;
DateTime dateTime;
if (!DateTime.TryParse(dateStr, out dateTime))
{
continue;
}
KeyValuePair<int, DateTime> pair = new KeyValuePair<int, DateTime>(i, dateTime);
pairList.Add(pair);
}
pairList.Sort(delegate(KeyValuePair<int, DateTime> s1, KeyValuePair<int, DateTime> s2)
{
return s2.Value.CompareTo(s1.Value);
});
if (pairList.Count == 0)
{
return null;
}
DateTime borderDate = DateTime.Now.AddDays(-(recentDays - 1));
borderDate = new DateTime(borderDate.Year, borderDate.Month, borderDate.Day);
int[] indexArray = new int[pairList.Count];
for (int i = 0; i < pairList.Count; i++)
{
indexArray[i] = pairList[i].Key;
if (pairList[i].Value.CompareTo(borderDate) >= 0)
{
remoteDayIndexInRecentDays = i + 1;
}
}
return indexArray;
}
/// <summary>
/// 根据过滤规则及过滤信息过滤Rss的条目信息
/// </summary>
/// <param name="srcRssItems"></param>
/// <param name="fiterInfo"></param>
/// <param name="fiterRule"></param>
/// <param name="rssItems"></param>
/// <returns></returns>
private static bool FilterRssInfo(List<RssItemOriInfo> srcRssItems, FilterInfo fiterInfo, FilterType fiterRule, out List<RssItemOriInfo> rssItems)
{
rssItems = new List<RssItemOriInfo>();
int[] orderByDate;
int itemsFilterAsDay = 0;
orderByDate = FiterByDateTime(fiterInfo.RecentDays, srcRssItems, out itemsFilterAsDay);
List<RssItemOriInfo> tempRssItems = new List<RssItemOriInfo>();
if (orderByDate == null)
{
return true;
}
for (int i = 0; i < orderByDate.Length; i++)
{
tempRssItems.Add(srcRssItems[orderByDate[i]]);
}
int itemsFilterAsItem = fiterInfo.RecentItems >= tempRssItems.Count ? tempRssItems.Count : fiterInfo.RecentItems;
int itemsFilterAsBoth = itemsFilterAsItem >= itemsFilterAsDay ? itemsFilterAsDay : itemsFilterAsItem;
if (fiterRule == FilterType.NONE)
{
rssItems = srcRssItems;
}
else if (fiterRule == FilterType.DAY)
{
for (int i = 0; i < itemsFilterAsDay; i++)
{
rssItems.Add(tempRssItems[i]);
}
}
else if (fiterRule == FilterType.ITEM)
{
for (int i = 0; i < itemsFilterAsItem; i++)
{
rssItems.Add(tempRssItems[i]);
}
}
else if (fiterRule == (FilterType.DAY | FilterType.ITEM))
{
for (int i = 0; i < itemsFilterAsBoth; i++)
{
rssItems.Add(tempRssItems[i]);
}
}
return true;
}
0 0
- 关于RSS信息按时间排序的代码
- LINUX的文件按时间排序
- LINUX的文件按时间排序
- 文件夹下面的文件按时间排序
- 抛砖引玉——实现LISTVIEW点击COLUMN排序的代码,可实现按时间,字符,数字
- 按时间段问好的JS代码
- logcat按时间排序
- ls 按时间排序
- json按时间排序
- Linux文件按时间排序
- android List按时间排序
- Linux按时间排序文件
- linux ll按时间排序
- List<Map>按时间排序
- 相册按时间排序 ios
- 关于按时上下班的事情
- 连续播放按时间排序的截图 模拟视频播放
- python按时间排序目录下的文件
- iOS 9 适配系列教程
- 局部敏感哈希(Locality-Sensitive Hashing, LSH)方法介绍
- 【UI基础】时钟效果的简单实现
- Linux-shell备忘录=>LTS
- JAVA微信支付 实现服务端返回预付单号和签名
- 关于RSS信息按时间排序的代码
- leetcode-Reverse Bits
- POSTGRESQL 并发控制
- 自定义View---怎么解决View的滑动冲突
- Java内存回收机制(第一讲)
- 不使用全局函数如何编写线程类
- ecshop多规格属性设置的的方法(如:一个商品多个颜色,尺寸,大小...)
- 【算法】约瑟夫环问题(报数出列)
- HTML5-Canvas画布的使用