C#如何检测日期变化

3

我的应用程序中有一个每5秒运行一次的计时器。我还有一个内部时钟,并且我想检测何时发生了日期更改。 为了测试,我尝试了以下代码但没有成功:

最初的回答:

我在应用程序中设置了一个计时器来每隔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);

比较失败了。由于我需要在日期改变时调用一个方法,在上面的例子中,它被每次都调用,而我不希望这种行为发生。有什么提示吗?

最初的回答:比较操作失败了,因为我需要在日期改变时调用一个方法。然而,使用上面的示例会导致该方法每次都被调用,我不想要这样的行为。你能否给出一些提示呢?

你是什么意思,你想知道是指过去了二十四小时还是只要应用程序运行了一天就改变数值? - Greg
2
结果是正确的。你可能想将两个日期的时间设置为00:00:00,然后进行相减。尝试一下(B.Date - A.Date).Days。 - Anil Goel
你的答案在这里(https://dev59.com/WF7Va4cB1Zd3GeqPHjjD?lq=1) - Maria
@AnilGoel 我认为你的解决方案是最好的,谢谢 - Otto Vasken
3个回答

5

直接比较 DateTime 的日期部分

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

3

只看日期部分

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
为了你的股票代码,为什么不使用TimeSpan变量来完成比较。你可以设置一个静态的TimeSpan变量为24小时(1天),然后创建一个次要的变量来存储值。然后将第二个TimeSpan变量设置为两天之间的差值,这将让你知道是否过了一天。

`

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 }

`


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接