Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从小时数中获取天数_C#_Asp.net_Datetime_Time - Fatal编程技术网

C# 从小时数中获取天数

C# 从小时数中获取天数,c#,asp.net,datetime,time,C#,Asp.net,Datetime,Time,我被要求更改表格,但有点不确定如何处理: 租用天数计算需要更改 如果开始日期和结束日期相同,则计算时间应为一天-以24小时为基础-计算小时数,除以24并四舍五入至最接近的整数 因此,从2013年11月14日08.00到2013年11月14日20.30是12.5小时-12.5除以24=0.52,四舍五入=1天 14.11.2013。2013年11月8日至15日20:30为36.5小时–36.5/24=1.52–四舍五入=2天 有人能帮忙吗 这是我目前的代码: private void noOfDa

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

租用天数计算需要更改

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

因此,从2013年11月14日08.00到2013年11月14日20.30是12.5小时-12.5除以24=0.52,四舍五入=1天

14.11.2013。2013年11月8日至15日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();
    }
}

查看
TimeSpan
结构。它有一个可以使用的
Hours
属性和
TotalDays
属性

TimeSpan time = new TimeSpan(0, 36, 5, 0, 0);
var days = time.TotalDays;
试试这个代码

        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);
        }
DateTime a=新的日期时间(2013,11,18,02,00,00);
DateTime b=新的日期时间(2013,11,20,03,30,00);
双日=0;
时间跨度持续时间=b-a;
if(duration.TotalDays>0&&duration.TotalDays<1)
{
天数=1天;
}
否则如果(duration.TotalHours>0)
{
天数=数学上限(持续时间/24小时);
}

显示一些代码,并解释出现问题的地方。当你表现出你的努力时,你更有可能得到帮助。在你的计算中使用Math.天花板函数。获取如下所示日期之间的时间跨度:“从2013年11月14日15:30到2013年11月15日09:30”应该给出多少天?一两个?不优雅。为什么要对已经是双精度的东西进行转换;那肯定是不可能的?如果可以立即使用“天”,为什么要用小时除以24?