将vb日期比较转换为c#
我有一个vb代码,我正在尝试将它转换为c 这是合同日期声明:将vb日期比较转换为c#,c#,vb.net,datetime,C#,Vb.net,Datetime,我有一个vb代码,我正在尝试将它转换为c 这是合同日期声明: Private _nextContactDate As DateTime 这对我来说很奇怪。Comapre datetime到字符串 否,您不需要比较字符串格式的DataTime变量。 您可以进行如下比较: DateTime myDate = new DateTime(2011,8,24); if(myDate > DateTime.MinValue) DoSomething(); 我不确定我是否完全理解你的
Private _nextContactDate As DateTime
这对我来说很奇怪。Comapre datetime到字符串 否,您不需要比较字符串格式的DataTime变量。 您可以进行如下比较:
DateTime myDate = new DateTime(2011,8,24);
if(myDate > DateTime.MinValue)
DoSomething();
我不确定我是否完全理解你的问题,但为什么要将
日期时间
与字符串
进行比较呢?不管怎样,为什么不只是比较日期呢
if (_nextContactDate > new DateTime(1900, 1, 1))
{
}
正如Greg所指出的,目前,
ToSortDateString
删除了日期的某些部分(特别是时间单位),但与最小日期相比,这是相当多余的-如果您关注这样一个级别,然后,您只能比较日期成员。此代码所做的是提取日期部分(即删除时间部分),并使用VB的松散特性,允许将表示为字符串的日期隐式转换回日期,以便与实际日期进行比较
删除时间部分的正确方法是检查如下:
_nextContactDate.Date > new DateTime(1900, 1, 1)
这似乎有些奇怪,因为这意味着1900年1月1日将无法通过这项检查,只有1900年1月2日的日期才能通过。因此,我倾向于检查此代码是否存在逻辑错误。在许多数据库中,时间存储为最小日期+时间值
因此,假设最短日期为1899年12月31日2359小时(如果我认为正确,这是访问的最短日期),那么1300H将存储为1900年1月1日1300H。
日期按“常规”存储。和带有时间组件的日期具有日期值,并将时间组件附加到它们
这跟密码有什么关系?最初的程序员试图确定字段是保存日期还是时间值。类比很简单。如果该值是time only,那么通过去掉time组件,您将得到1900年1月1日。如果它包含一个日期组件,它将超过1900年1月1日。让我们想象一下\u nextContactDate
是1900年1月1日的某个时间,在这种情况下,您的代码将返回与上面的VB.net代码不同的结果。VB代码也可以这样做。它将更快,更少的“臭味”,并且不会依赖于选项的严格关闭和允许的弱输入+1(请忽略我之前的错误计算和删除的评论)绝对-没有理由用VB代码的方式编写。(也删除了我以前的评论,因为它现在毫无意义;-)那么,DateTime
的MinValue
是什么?但不是1900年1月1日的开始。因此,不是OP中代码的等效转换。请查看我的相关注释。最好将变量与DateTime.MinValue进行比较,并使用DateTime的MinValue作为初始值。@masoud ramezani:在数据库中处理日期时,这并不总是可取的;同样地,SQL最小值是1,11753
。如果我的答案的格式看起来很糟糕,那么很抱歉。我正在使用手机的浏览器。在处理包含日期和/或时间的字段时,我也使用这种技术。
_nextContactDate.Date > new DateTime(1900, 1, 1)