如何解决用户不应预订已过去的时间的问题

时间:2019-05-03 07:52:25

标签: c# asp.net entity-framework asp.net-mvc-5 code-first

我现在正在研究一个学校项目,我们正在构建一个预订系统,该系统仅显示今天的可用时间。 (我们没有使用日历)。我的问题是我如何只显示今天的可用时间而不显示过去的时间?现在,即使实际时间是12.00,代码也会显示从8.00到16.00的所有时间。如果时钟是12点,我只想显示12点以后的时间。希望您能为我提供帮助,因为我没有找到适合我的解决方案。

这是视图中代码的样子:

@{
    int open = 8;
    decimal inHours = Convert.ToDecimal(Model.service.Duration) / Convert.ToDecimal(60);
    int iterations = (int)Math.Floor(Convert.ToDecimal(open) / Convert.ToDecimal(inHours));
    DateTime startTime = DateTime.Today;
    startTime = startTime.AddHours(8);

    List<DateTime> dt = new List<DateTime>();
    for (int i = 0; i < iterations; i++) 
    {
        DateTime endTime = startTime;
        endTime = endTime.AddMinutes(Model.service.Duration);
        if (!Model.service.Bookings.Any(x => x.StartTime == startTime)) 
        {
            @Html.ActionLink(startTime.ToString("HH:mm") + "-" + endTime.ToString("HH:mm"),  
                "BookService", "Booking", new 
                    { 
                        inBookingSystemId = Model.bookingSystem.BookingSystemId, 
                        inServiceId = Model.service.ServiceId, 
                        inStartTime = startTime.ToString() 
                     }, new { @class = "btn btn-primary" })
        }
        startTime = endTime;
    }
}

1 个答案:

答案 0 :(得分:2)

要仅显示一天中的其他时间,您可以执行以下操作:

List<DateTime> dt = new List<DateTime>();

int hoursToAdd = 1;
int hourNow = DateTime.Now.Hour;

for (int i = hourNow ; i <= 23; i++)
{
    dt.Add(DateTime.Now.AddHours(hoursToAdd));
    hoursToAdd++;
}

这不是最好的方法,可能会有更优雅的方法,但是它会起作用。