如何使我的计算更准确

时间:2014-01-17 14:09:47

标签: c# datetime

当我尝试准确接收一个月的假期时,我会使用计算器。

当我预订一个洞日时,这非常有效。但是,如果我想要一个小时或只是1/2,它“不工作”它显示为一整天。

如何让我的计算更精确?

    public double[] GetMonthReport(int year)
    {
        double[] yearMonths = new double[13];
        if (this.HtVacationDays.Any())
        {
        }
        {
            foreach (ZvVacationDay vacationDay in this.ZvVacationDay)
            {
                foreach (DateTime vacationDayDate in vacationDay.GetDates())
                {
                    if (vacationDayDate.Year == year)
                    {
                        yearMonths[vacationDayDate.Month] += 1;
                    }
                }
            }
        }
        return yearMonths;
    }

在我的ZvVacationDay中,我有FromDate(datetime)和ToDate(datetime)以及标题为varchar等...

以下是我在db中的数据示例。现在是一整天的假期

FromDate 2009-08-17 08:00:00:000 ToDate 2009-08-17 16:00:00:000

感谢您的帮助和快速解答!

2 个答案:

答案 0 :(得分:0)

你需要知道他们起飞的时间。

您可以将休息时间设置为休息时间/休息日,以便您的迭代变为

foreach(TimeSpan vacationTimeOff in vacationDay.GetTimeOff())

或者拥有RAHalfVacationDays并对其进行迭代。

只要您将部分日作为数据源,就会变得微不足道

yearMonths[vacationDayDate.Month] += timeOff;

答案 1 :(得分:0)

伪代码将是:

        if (vacationDayDate.Year == year)
        {
            if({isHalfDay})
                yearMonths[vacationDayDate.Month] += 0.5;
            else   // is full day
                yearMonths[vacationDayDate.Month]++;
        }

或者更简洁:

        if (vacationDayDate.Year == year)
        {
            yearMonths[vacationDayDate.Month] += {isHalfDay} ? 0.5 : 1.0;
        }