有没有办法将这两种方法结合起来进行日期时间和时间跨度比较
本文关键字:日期 时间 比较 时间跨度 起来 结合 方法 两种 有没有 | 更新日期: 2023-09-27 18:31:13
有没有办法将这两种方法结合起来DateTime
(在比较日期时间时忽略刻度)和TimeSpan
与通用参数类型的比较并合并逻辑?
private bool AreDateTimesEqual(DateTime? firstDateTime, DateTime? seconDateTime)
{
bool compareResult = false;
if (firstDateTime.HasValue && seconDateTime.HasValue)
{
firstDateTime = firstDateTime.Value.AddTicks(-firstDateTime.Value.Ticks);
seconDateTime = seconDateTime.Value.AddTicks(-seconDateTime.Value.Ticks);
compareResult = DateTime.Compare(firstDateTime.GetValueOrDefault(), seconDateTime.GetValueOrDefault()) == 0;
}
else if (!firstDateTime.HasValue && !seconDateTime.HasValue)
{
compareResult = true;
}
return compareResult;
}
private bool AreTimeSpansEqual(TimeSpan? firstTimeSpan, TimeSpan? secondTimeSpan)
{
bool compareResult = false;
if (firstTimeSpan.HasValue && secondTimeSpan.HasValue)
{
compareResult = TimeSpan.Compare(firstTimeSpan.GetValueOrDefault(), secondTimeSpan.GetValueOrDefault()) == 0;
}
else if (!firstTimeSpan.HasValue && !secondTimeSpan.HasValue)
{
compareResult = true;
}
return compareResult;
}
听起来好像您要比较两个没有时间部分的日期时间对象。
请记住,DateTime 和 TimeSpan 都实现了 IEquatable
接口,该接口允许您在任一实例上调用 Compare(...)。
要比较没有时间的日期:
DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddHours(5);
return date1.Date.Compare(date2.Date) == 0;
对于日期时间变量,.Date 属性将返回不带时间的日期。
要比较 TimeSpans,您还需要使用 .Compare
并检查结果是否为 0(为了相等)。