在我的应用程序中,我有一个每 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
如果我检查总天数是否> 0,我会成功检测到日期变化,但在以下情况下(相差一分钟(
DateTime C = new DateTime(2019, 6, 20, 12, 58, 29);
DateTime D = new DateTime(2019, 6, 20, 12, 59, 29);
比较失败。由于我需要在日期变化时调用一个方法,因此上面的示例每次都调用它,我不希望这种行为。有什么提示吗?
直接比较日期时间Date
部分
bool isSameDay = (A.Date == B.Date);
只看日期部分
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;
对于您的股票代号,为什么不使用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 }
'