是否有日期时间之间在C#中,就像SQL呢?

是否有日期时间之间的C#? 我知道我可以做简单的检查与if (a > date1 && a < date2)但我试图找到Between方法。

--------------解决方案-------------

没有一个Between函数,但应该很容易添加一个

public static bool Between(DateTime input, DateTime date1, DateTime date2)
{
return (input > date1 && input < date2);
}

为什么要限制只是日期,使用IComparable接口。

public static bool Between (this IComparable a, IComparable b, IComparable c)
{
return a.CompareTo(b) >= 0 && a.CompareTo(c) <= 0;
}

请注意,如@Thomas评论说,这是一个包容性的关系。

不,那里没有。

FWIW,BETWEEN是包容的,不是排他性的WRT它的边界。 无论如何,在这里你去:

public static bool Between(this DateTime instant, DateTime dtFrom , DateTime dtThru )
{
if (dtFrom > dtThru) throw new ArgumentException( "dtFrom may not be after dtThru", "dtFrom" );
bool isBetween = ( instant >= dtFrom && instant <= dtThru );
return isBetween;
}

没有,但如果你每次代码大全服从号线格式,原始代码看起来简单:

if((lowDate < a) && (a < highDate))

您可以添加一个扩展方法:

public static Boolean Between(this DateTime input, DateTime minDate, DateTime maxDate)
{
// SQL takes limit in !
return input >= minDate && input <= maxDate;
}

在@richardschneider答案的基础上,我的解决方案增加了边界范围类型作为参数。

public enum RangeBoundaryType
{
[Description("Exclusive")]
Exclusive,

[Description("Inclusive on both boundaries")]
Inclusive,

[Description("Inclusive on only the lower boundary")]
InclusiveLowerBoundaryOnly,

[Description("Inclusive on only the upper boundary")]
InclusiveUpperBoundaryOnly
}

public static bool Between(this IComparable value, IComparable comparator0, IComparable comparator1, RangeBoundaryType rangeBoundary)
{
switch (rangeBoundary)
{
case RangeBoundaryType.Exclusive:
return (value.CompareTo(comparator0) > 0 && value.CompareTo(comparator1) < 0);

case RangeBoundaryType.Inclusive:
return (value.CompareTo(comparator0) >= 0 && value.CompareTo(comparator1) <= 0);

case RangeBoundaryType.InclusiveLowerBoundaryOnly:
return (value.CompareTo(comparator0) >= 0 && value.CompareTo(comparator1) < 0);

case RangeBoundaryType.InclusiveUpperBoundaryOnly:
return (value.CompareTo(comparator0) > 0 && value.CompareTo(comparator1) <= 0);

default:
return false;
}
}

分类:C# 时间:2012-01-01 人气:0
本文关键词: C#,C#4.0
分享到:

相关文章

  • C#,J#和VB.NET是有可能在每写一个类,并使其变量在一个应用程序进行交互? 2012-07-31

    有人问我这个问题,在接受采访时会非常感谢您的回答. 问候; 穆罕默德·穆赫辛 --------------解决方案------------- 目前还不清楚到底是什么原面试官的意思- 但如果他被询问是否有可能在.NET用C#编写,J#结合的代码和VB.NET - 答案是肯定的-只要每个类是在单独的程序. 你不能从编译多语言的代码放到一个单独的组件. 只要写在每一个代码是CLS兼容 - 你应该能够引用宣布,无论语言的类型和属性. 语言中立性是.NET的核心设计原则之一. 要回答的评论 ... 您的问

  • 我尝试拨打运营商的USSD代码* 123#,* 400#获取运营商的服务,它不工作,该服务工作在所有手机上。 2014-10-14

    我米有一个三星Omnia w.When余米拨打使用的代码,该消息出来会话终止. 甚至回复使用的设备的选项也不会启用 PLS解决this.this现在的当务之急是利用运营商的服务. 我无法从这样的window7 phone.what一个垃圾技术转发消息. --------------解决方案------------- 嗨niranjan78, 关于你与拨打您的手机上遇到的问题. 下面是一些你可以尝试的故障排除步骤. 1)电话之交,取出电池,离开30秒后,重新安装电池,然后再试一次. 2)将手机连接

  • F#和C#项目之间导航 2015-02-25

    是否有可能安装Visual Studio中,这样我可以去C#和F#项目之间的定义是什么? 没有任何人知道的任何计划,以在Visual Studio F#更好地集成? --------------解决方案------------- 这不是在Visual Studio中支持的操作. 一般来说转到定义,查找所有引用,等等......不同语言的项目之间不起作用. 这适用于C ++的任意组合,C#,F#和VB.Net 如果你想告诉微软,这是那么大家向往的功能,请投票支持该Microsoft连接项目

  • 有没有更好的方式来写,而是采用0元“$('#发件人名')[0] .value的”? 2012-04-12

    有没有更好的方式来写 $('#发件人名')[0] .value的; 而是采用了0元......它的一个ID,因此仅1元应该存在,是有某种FirstElement财产或第一个孩子什么的? 基本上我返回给一个变量.但当然,jQuery的返回项的数组,但它是一个ID,所以我不只是数组中的第一项感兴趣.. 有任何想法吗? 谢谢 --------------解决方案------------- 使用val函数:返回输入的第一个元素的值. var value = $('#sender-name').val()

  • 引进数据/单元格的值 - 公式似乎覆盖单元格的格式(应该是#,## 0.00,来作为一般) 2012-08-20

    大家好, 我试图从外部数据库带来的数据到工作表. 我携带的特定格式的单元格,除了细胞伟大的工程,我想一个公式来的 - 这些细胞就会永远的格式来作为一般,虽然我看到的格式被带来了作为#,## 0.00 - 我查这个通过了MsgBox,并没有显示正确的格式 - 但一旦配方过来,细胞变成一般 - 我带来了计算公式为: = MAX(0,J15-6)*(IF(起租1> 35,21,IF(起租1 = 24,25,27)))+ CF15 可以在奶粉,因为它引用的其他领域,是我的目标单元格的格式变成一般的原因,

  • 最佳的.NET Framework 2.0本书对C#,库? 2012-10-14

    我是一个资深slash-"先进的"C#/.NET的开发,目前使用的3.5 Framework和WPF / WCF和Silverlight(WPF / E). 我想出的权利,通过1.0和2.0,因此我深谙与.NET的发展. 我的下一个项目可能是"回"到2.0框架,但有足够的复杂性(和时间压力),以便对"专家"的技能,而不仅仅是"先进"的人打电话. 因此,我期待与全面覆盖的2.0框架,主要是组织和利用图书馆的书(由,是的,我其实只

  • 如何获得%,得到#DIV / 0!?时, 2013-07-26

    如何获得%,得到#DIV / 0!?时, --------------解决方案------------- Janyjan写道: 如何获得%,得到#DIV / 0!?时, 如果你想帮助,那就理应你提供一些例子. 如果你想通过计算A1 / B1比例,但它会导致一个错误,当B1是零,你可以尝试以下操作: = IF(B1 = 0,SIGN(A1)A1 / B1) 格式为百分比. 另外,如果您使用的是Excel 2007或更高版本: = IFERROR(A1 / B1,SIGN(A1)) 这些公式分别当B

  • 格式合并域返回一个破折号,如果数为0(已格式化它已为POS&#负的) 2013-09-12

    在合并域返回破折号零 --------------解决方案------------- 使用下面的开关 - \#",0.00;(,0.00);' - '" 根据需要改变负. - <>> <> <<>> <<> <>> <> <<> <>> 格雷厄姆市长 - 字MVP www.gmayor.com 发布通过NNTP桥 <>> <&

  • 我怎样才能得到VS2010使用3.0 C#编译器,而不是4.0? 2013-09-23

    我怎样才能得到VS2010使用3.5 C#编译器,而不是4.0? 它甚至有可能,或者我需要有一个单独的VS2008的解决方案文件,以强制编译与3.0编译器 ? (更新修复编译器版本号) 更新:我的动机是为了获得在VS2010开发的效率,但它需要一个构建服务器,可能不具备.NET 4.0二进制文件就可以了单个位上运行. --------------解决方案------------- 我不相信你可以做到这一点. 您可以设置一个语言版本在项目属性,但是这是不一样的使用C#3编译器.NET 3.5. 我

  • 我怎样才能把一个空卖,让#DIV / 0!? 2013-10-30

    我用百分比工作,并得到#DIV / 0! 分裂细胞2时出错. 我希望它放置0%时,细胞是35/0,但是当一个空白单元格中没有任何细胞. 这里是什么样的例子我工作的. 小区j小区k单元L. 1 54 54 =(K1 / J1)100% 2. =(K2 / J2)#DIV / 0! 3. 35 0 =(K3 / J3)0% 小区j代表什么,我们问及小区k可叫做什么,我们实际收到; 因此细胞L代表%核定. 我有一些细胞将被留空白,我得到#DIV / 0! 错误,我有一些细胞,将有一个价值/ 0得到0%

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 3.191 (s). 10 q(s)