-1

有没有办法将这两种方法结合起来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;
    }
4

1 回答 1

1

听起来好像您要比较两个没有时间部分的 DateTime 对象。

请记住,DateTime 和 TimeSpan 都实现了IEquatable允许您在任一实例上调用 Compare(...) 的接口。

要比较没有时间的日期:

DateTime date1 = DateTime.Now;
DateTime date2 = DateTime.Now.AddHours(5);
return date1.Date.Compare(date2.Date) == 0;

对于 DateTime 变量,.Date 属性将返回不带时间的日期。

要比较 TimeSpan,您还可以使用.Compare并检查结果是否为 0(表示相等)。

于 2014-11-20T05:49:27.757 回答