C# 判断时间段是否相交的实现方法

 更新时间:2017年10月25日 15:17:25   作者:_iorilan  
这篇文章主要介绍了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#调用WinRar执行rar、zip压缩的方法

    C#调用WinRar执行rar、zip压缩的方法

    这篇文章主要介绍了C#调用WinRar执行rar、zip压缩的方法,涉及C#针对winrar的判断与调用技巧,需要的朋友可以参考下
    2015-05-05
  • WPF模拟实现Gitee泡泡菜单的示例代码

    WPF模拟实现Gitee泡泡菜单的示例代码

    这篇文章主要介绍了如何利用WPF模拟实现Gitee泡泡菜单,文中的示例代码讲解详细,对我们学习或工作有一定帮助,需要的可以参考一下
    2022-08-08
  • C#实现钟表程序设计

    C#实现钟表程序设计

    这篇文章主要为大家详细介绍了C#实现钟表程序设计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • C#开发之微信小程序发送模板消息功能

    C#开发之微信小程序发送模板消息功能

    这篇文章主要介绍了C#开发之微信小程序发送模板消息功能,需要的朋友可以参考下
    2017-09-09
  • C# RichTextBox制作文本编辑器

    C# RichTextBox制作文本编辑器

    这篇文章主要为大家详细介绍了C# RichTextBox制作文本编辑器的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • c#桥接模式(bridge结构模式)用法实例

    c#桥接模式(bridge结构模式)用法实例

    这篇文章主要介绍了c#桥接模式(bridge结构模式)用法,较为详细的分析了桥接模式的原理与用法实例,具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • C#中泛型容器Stack<T>的用法并实现”撤销/重做”功能

    C#中泛型容器Stack<T>的用法并实现”撤销/重做”功能

    这篇文章介绍了C#中泛型容器Stack<T>的用法并实现”撤销/重做”功能,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-10-10
  • C#中如何为枚举类型添加描述方法【小技巧】

    C#中如何为枚举类型添加描述方法【小技巧】

    相信很多人对枚举并不陌生,枚举可以很方便和直观的管理一组特定值。下面这篇文章主要给大家介绍了关于C#中如何为枚举类型添加描述方法的相关资料,需要的朋友可以参考下
    2019-02-02
  • C# 使用 log4net 日志组件的方法

    C# 使用 log4net 日志组件的方法

    这篇文章主要介绍了C# 使用 log4net 日志组件的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2020-12-12
  • C语言使用getch()读取方向键

    C语言使用getch()读取方向键

    getch()是编程中所用的函数,这个函数是一个不回显函数,当用户按下某个字符时,函数自动读取,无需按回车,有的C语言命令行程序会用到此函数做游戏,但是这个函数并非标准函数,要注意移植性
    2021-07-07

最新评论