【问题标题】:getting days from the amount of Hours从小时数中获取天数
【发布时间】:2013-11-18 10:05:00
【问题描述】:

有人要求我更改表单,但有点不确定如何解决:

雇佣天数计算需要改变。

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

所以从 14/11/2013 08.00 到 14.11.2013 20.30 是 12.5 小时 - 12.5 除以 24 = 0.52 向上取整 = 1 天

2013 年 11 月 14 日。 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();
    }
}

【问题讨论】:

  • 显示一些代码,并说明您遇到问题的地方。当你表明你已经做出努力时,你更有可能获得帮助。
  • 在您的计算中使用 Math.Ceiling 函数。获取天之间的时间跨度,如下所示:stackoverflow.com/questions/4946316/…
  • “从14.Nov.2013 15:3015.Nov.2013 09:30”应该给多少天?一两个?

标签: c# asp.net datetime time


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    试试这个代码

            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);
            }
    

    【讨论】:

    • 不优雅。你为什么要在已经是double的东西上做Convert.ToDouble;那肯定是无操作?当您可以立即使用“天”时,为什么要使用小时并除以 24?
    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 2019-07-09
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多