我在我的代码中遇到了一个问题,我今天将今天的日期与数据库中的日期进行比较,这是我的代码。这里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
答案 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;