这篇文章主要介绍了C# 判断时间段是否相交的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
C# 判断时间段是否相交的实现方法
1. 判断两个起止时间是否相交:
public static bool IsTimeBetween(TimeSpan input, TimeSpan start, TimeSpan end, bool fromInclusice, bool toInclusive)
{
//http://stackoverflow.com/questions/592248/how-can-i-check-if-the-current-time-is-between-in-a-time-frame
// see if start comes before end
if (end < start)
{
return
((toInclusive && (input <= end)) || (!toInclusive && (input < end)))
||
((fromInclusice && (input >= start)) || (!fromInclusice && (input > start)));
}
else
{
return
((fromInclusice && (input >= start)) || (!fromInclusice && (input > start)))
&&
((toInclusive && (input <= end)) || (!toInclusive && (input < end)));
}
}
2. 传入起止时间的表达式,判断与已知时间段的交集,生成Mongo查询:
public IMongoQuery GetMongoQueryIntersectWith<TCollection>(
Expression<Func<TCollection, DateTime>> fromExp,
Expression<Func<TCollection, DateTime>> toExp)
{
var rangeTo = Query.And(Query<TCollection>.GTE(toExp, To), Query<TCollection>.LTE(fromExp, To));
var rangeFrom = Query.And(Query<TCollection>.GTE(toExp, From), Query<TCollection>.LTE(fromExp, From));
var rangeQuery = Query.Or(rangeTo, rangeFrom,
Query.And(Query<TCollection>.GTE(fromExp, From),Query<TCollection>.LTE(toExp, To)));
return rangeQuery;
}
其中From和To为两个时间属性
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
沃梦达教程
本文标题为:C# 判断时间段是否相交的实现方法
基础教程推荐
猜你喜欢
- C# windows语音识别与朗读实例 2023-04-27
- ZooKeeper的安装及部署教程 2023-01-22
- C# 调用WebService的方法 2023-03-09
- C# List实现行转列的通用方案 2022-11-02
- 一个读写csv文件的C#类 2022-11-06
- C#类和结构详解 2023-05-30
- unity实现动态排行榜 2023-04-27
- winform把Office转成PDF文件 2023-06-14
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- C#控制台实现飞行棋小游戏 2023-04-22