C#检测日期何时更改

时间:2019-06-21 15:25:28

标签: c# wpf

在我的应用中,我有一个自动收录器,每5秒运行一次。我还有一个内部时钟,我想检测白天的时间。 为了测试,我尝试了以下代码,但未成功:

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B-A).Days;          // it returns 0
double dd = (B-A).TotalDays;    // it return 0.00002136213 

如果我检查 TotalDays> 0 ,我成功检测到日期变化,但在以下情况下(相差一分钟)

DateTime C = new DateTime(2019, 6, 20, 12, 58, 29);
DateTime D = new DateTime(2019, 6, 20, 12, 59, 29);

比较失败。由于我需要在日期更改时调用一个方法,因此上面的示例每次都会被调用,因此我不希望出现这种情况。有提示吗?

3 个答案:

答案 0 :(得分:2)

直接比较DateTime的Date部分

bool isSameDay = (A.Date == B.Date);

答案 1 :(得分:1)

仅查看日期部分

DateTime A = new DateTime(2019, 6, 20, 23, 58, 29);       
DateTime B = new DateTime(2019, 6, 21, 00, 01, 12);
Int32 dd = (B.Date-A.Date).Days;  

答案 2 :(得分:1)

对于您的代码,为什么不使用TimeSpan变量来完成比较。您将1个静态时间跨度变量设置为24小时(1天),然后创建一个辅助变量来存储值。然后,将第二个时间跨度变量设置为等于减去两天的时间,这将让您知道一天是否过去了。

`

TimeSpan newDayReference = new TimeSpan(24,0,0);
TimeSpan comparison;

//These two variables set to show difference.
DateTime A= DateTime.Now.AddDays(-1);
DateTime B = DateTime.Now;
comparison = B - A;

if(comparison > newDayReference){ //success }

`