将vb日期比较转换为c#

时间:2011-08-24 10:00:06

标签: c# vb.net datetime

我在vb中有一个代码,我正在尝试将其转换为c#。

_nextContactDate.ToShortDateString > New Date(1900, 1, 1)

这是_nexContractDate声明:

   Private _nextContactDate As DateTime

这对我来说很奇怪。 Comapre datetime to string?

4 个答案:

答案 0 :(得分:7)

此代码正在做的是提取日期部分(即删除时间部分)并使用VB的松散性质,允许将表示为字符串的日期隐式转换回日期,以便与实际日期进行比较

删除时间部分的正确方法是检查如下:

_nextContactDate.Date > new DateTime(1900, 1, 1)

这似乎很奇怪,因为这意味着1900年1月1日将无法通过此检查,并且只有1900年1月2日的日期才能通过。因此,我倾向于检查此代码是否存在逻辑错误。

答案 1 :(得分:1)

我不确定我完全理解你的问题,但为什么要比较DateTimestring,为什么不比较日期?

if (_nextContactDate > new DateTime(1900, 1, 1))
{

}

正如格雷格所指出的,目前ToShortDateString删除了日期的某些部分(特别是时间单位),但与最低日期相比,这是多余的 - 如果你担心这样的话一个级别,那么您只能比较Date成员。

答案 2 :(得分:0)

不,您不需要以字符串格式比较DateTime变量。 你可以比较如下:

DateTime myDate = new DateTime(2011,8,24);

if(myDate > DateTime.MinValue)
    DoSomething();

答案 3 :(得分:0)

在许多数据库中,时间存储为最小日期+时间值。

因此,假设最小日期是1899年12月31日2359H(如果我认为这是Access的最小值)那么1300H将被存储为1900年1月1日1300H。 日期存储为“通常”。带有时间组件的日期具有日期值,并附加了时间组件。

这与代码有什么关系?原始程序员正在尝试确定该字段是否包含日期或时间值。这个比喻很简单。如果值只是时间,那么通过剥离时间组件,您将在1900年1月1日离开。如果它包含日期组件,它将超过1900年1月1日。