Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将vb日期比较转换为c#_C#_Vb.net_Datetime - Fatal编程技术网

将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(); 我不确定我是否完全理解你的

我有一个vb代码,我正在尝试将它转换为c

这是合同日期声明:

   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)