在我的应用中,我有一个自动收录器,每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);
比较失败。由于我需要在日期更改时调用一个方法,因此上面的示例每次都会被调用,因此我不希望出现这种情况。有提示吗?
答案 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 }
`