4

これが私の質問です:

DateTime previousDate = new DateTime();
DateTime currentDate = new DateTime();
foreach (ApproverVo approver in approvers)
{
    if (previousDate != null)
    {
        currentDate = (DateTime)approver.ApprovalDate;
        totalTimeSpan += (currentDate - previousDate).TotalDays;
        previousDate = currentDate;
    } else
        previousDate = (DateTime)approver.ApprovalDate;
}

前の日付が最初に宣言されている場合、DateTime() のデフォルト値が含まれます。私がやりたいことは、previousDate に適切な日付が割り当てられているかどうかを調べることです。

アドバイスください、ありがとう

4

2 に答える 2

2

あなたの承認日が等しい値を持っていないと仮定しますDateTime.MinValue

DateTime previousDate = DateTime.MinValue;
DateTime currentDate = new DateTime();
foreach (ApproverVo approver in approvers)
{
    if (previousDate != DateTime.MinValue)
    {
        currentDate = (DateTime)approver.ApprovalDate;
        totalTimeSpan += (currentDate - previousDate).TotalDays;
        previousDate = currentDate;
    } else
        previousDate = (DateTime)approver.ApprovalDate;
}

アップデート

@mdmullinaxの回答によると、上記のコードは次のようになります。

DateTime previousDate = new DateTime();
DateTime currentDate = new DateTime();
foreach (ApproverVo approver in approvers)
{
    if (previousDate != new DateTime())
    {
        currentDate = (DateTime)approver.ApprovalDate;
        totalTimeSpan += (currentDate - previousDate).TotalDays;
        previousDate = currentDate;
    } else
        previousDate = (DateTime)approver.ApprovalDate;
}
于 2013-02-25T05:25:49.493 に答える
2

previousDate == DateTime.MinValue以来チェック

DateTime previousDate = new DateTime();

と同等です

DateTime previousDate = DateTime.MinValue;

MSDN DateTime Structureドキュメントから:

DateTime dat1 = new DateTime();
// The following method call displays 1/1/0001 12:00:00 AM.
Console.WriteLine(dat1.ToString(System.Globalization.CultureInfo.InvariantCulture));
// The following method call displays True.
Console.WriteLine(dat1.Equals(DateTime.MinValue));
于 2013-02-25T05:26:44.067 に答える