比较两个日期时减去日期

时间:2015-09-30 08:15:28

标签: c#

我在我的代码中遇到了一个问题,我今天将今天的日期与数据库中的日期进行比较,这是我的代码。这里label10.Text包含数据库中的日期。基本上我正在制作一个提醒应用程序。如果数据库日期与今天的日期匹配,那么它应该发送提醒电子邮件

DateTime dt = DateTime.Parse(label10.Text);
long t = dt.ToFileTime();
DateTime date1 = DateTime.Today;
DateTime date2 = new DateTime(t);
//DateTime date2 = new DateTime(Convert.ToInt64(label10.Text));
//DateTime date2 = new DateTime(2015,9,16);
int result = DateTime.Compare(date1, date2);
string relationship;
if (result > 0)
{
    relationship = "is earlier than";
    //SendEmail();               
}
else if (result == 0)
{
    relationship = "is the same time as";
    SendEmail();
    //MessageBox.Show("is same");
}

else
{
    relationship = "is later than";
    SendEmail();
    //MessageBox.Show("is later");
}
Console.WriteLine("{0} {1} {2}", date1, relationship, date2);

现在问题是当我运行应用程序时,date2被填充29.09.15而标签10显示为30.09.15。我不知道为什么会发生这种情况我也注意到了#34; dt"在30.09.15 12:00:00 AM,其中"日期2" 29.09.15 06:30:00 PM,我在DB中没有任何其他记录,提醒日期设置为29.09.15

2 个答案:

答案 0 :(得分:0)

您是否已检查此问题是否与当地时间和UTC时间之间的时差有关?数据库时间可以是UTC时间,而后面的代码使用localtime。您可以将所有时间转换为本地或通用。

// for converting to local time
date1.ToLocalTime();
// converting to utc time
date1.ToUniversalTime();

答案 1 :(得分:0)

日期的刻度与文件时间之间存在差异。从1970年1月1日开始计时,文件时间从1601年1月1日开始计算。您需要更改此信息:

long t = dt.ToFileTime();
DateTime date2 = new DateTime(t);

到此:

long t = dt.Ticks;
DateTime date2 = new DateTime(t);

或更简单:

DateTime date2 = dt;