我在vb中有一个代码,我正在尝试将其转换为c#。
_nextContactDate.ToShortDateString > New Date(1900, 1, 1)
这是_nexContractDate声明:
Private _nextContactDate As DateTime
这对我来说很奇怪。 Comapre datetime to string?
答案 0 :(得分:7)
此代码正在做的是提取日期部分(即删除时间部分)并使用VB的松散性质,允许将表示为字符串的日期隐式转换回日期,以便与实际日期进行比较
删除时间部分的正确方法是检查如下:
_nextContactDate.Date > new DateTime(1900, 1, 1)
这似乎很奇怪,因为这意味着1900年1月1日将无法通过此检查,并且只有1900年1月2日的日期才能通过。因此,我倾向于检查此代码是否存在逻辑错误。
答案 1 :(得分:1)
我不确定我完全理解你的问题,但为什么要比较DateTime
到string
,为什么不比较日期?
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日。