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

假设您的批准日期没有值 equals 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 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 回答