-1

これらの 2 つの方法を組み合わせて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

2 つの DateTime オブジェクトを時間部分なしで比較しようとしているかのように聞こえます。

DateTime と TimeSpan の両方IEquatableが、いずれかのインスタンスで Compare(...) を呼び出すことができるインターフェイスを実装していることに注意してください。

時間なしで日付を比較するには:

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

DateTime 変数の場合、.Date プロパティは時刻なしで日付を返します。

TimeSpans を比較するに.Compareは、結果が 0 (等しい) であることも使用して確認します。

于 2014-11-20T05:49:27.757 に答える