从小时数中获取天数

时间:2013-11-18 10:05:00

标签: c# asp.net datetime time

我被要求对表格进行更改,但有点不确定如何处理它:

雇用天数计算需要改变。

如果开始日期和结束日期相同,则计算应为一天 - 以24小时为基础 - 计算小时数,除以24并向上舍入到最接近的整数

所以从2013年11月14日08.00到14.11.2013 20.30是12.5小时 - 12.5除以24 = 0.52向上= 1天

二〇一三年十一月十四日。 08.00至15.11.2013 20.30是36.5小时--36.5 / 24 = 1.52 - 向上舍入= 2天

任何人都可以帮忙吗?

这是我目前的代码:

private void noOfDaysRequired()
{
    decimal days = 0;

    if (txtEndTimeHH.Text != "" || txtEndTimeMM.Text != "")
    {
        DateTime bookingStartTime = DateTime.Parse(txtStartDate.Text + " " + txtStartTimeHH.Text + ":" + txtStartTimeMM.Text);
        DateTime bookingEndTime = DateTime.Parse(txtEndDate.Text + " " + txtEndTimeHH.Text + ":" + txtEndTimeMM.Text);
        bookingStartTime = bookingStartTime.AddMinutes(15);
        TimeSpan noOfDays = bookingEndTime - bookingStartTime;
        days = noOfDays.Days;
        if (days == 0)
        {
            days += 1;
        }
        if (bookingEndTime.TimeOfDay.Ticks > bookingStartTime.TimeOfDay.Ticks)
        {
            days = days + 1;
        }

        lblDaysRequired.Text = days.ToString();
    }
}

2 个答案:

答案 0 :(得分:0)

查看TimeSpan结构。它具有您可以使用的Hours属性以及TotalDays属性。

TimeSpan time = new TimeSpan(0, 36, 5, 0, 0);
var days = time.TotalDays;

答案 1 :(得分:0)

试试此代码

        DateTime a = new DateTime(2013,11, 18, 02, 00, 00);
        DateTime b = new DateTime(2013, 11, 20, 03, 30, 00);
        double days = 0;
        TimeSpan duration = b - a;

        if (duration.TotalDays > 0 && duration.TotalDays < 1)
        {
            days = 1;
        }
        else if (duration.TotalHours > 0)
        {
            days = Math.Ceiling(duration.TotalHours / 24);
        }