如何使用AddHours和AddMinutes在DateTime变量中添加时间?

时间:2017-02-18 15:13:17

标签: c# asp.net-mvc datetime

我将创建一个用户必须输入日期和时间的表单。在数据库中,我将在一列中合并日期和时间。我怎么能用ASP.NET MVC和C#做到这一点?

信息:您可以在下方找到我的HTML代码

<form action="~/admin/NieuweCreateActiviteit" method="post" enctype="multipart/form-data">
    <div class="form-group">

        <label class="control-label col-md-2 required" for="NieuwActiviteit_StartPeriode">Aanvang datum</label>

        <div class="col-md-6">
            <input id="NieuwActiviteit_StartPeriode" name="NieuwActiviteit.StartPeriode" type="date" class="form-control text-box single-line col-md-6" required data-val="true" data-val-date="Dit veld moet een geldige datum bevatten." data-val-required="Dit veld is vereist." value="">
            @Html.ValidationMessageFor(model => model.NieuwActiviteit.StartPeriode, "", new { @class = "text-danger" })
        </div>

        <div class="col-md-4">
            <div class="form-group" style="margin-bottom: 0">
                <label class="control-label col-md-6 required">Uur</label>
                <div class="col-md-6">
                    <input type="time" class="form-control" required data-val-required="Dit veld is vereist." name="BeginUur" />
                </div>
            </div>
        </div>

    </div>
</form>

在控制器中接收日期(属性名称NieuwActiviteit.StartPeriode 1 和时间(属性名称BeginUur作为分离的属性。

所以我的解决方案是将时间分成:,并使用方法AddHoursAddMinutes为该属性添加时间StartPeriode

但它不起作用。如果我在下面的代码中的标记行上放置一个断点,变量tempstartuurtempstartmin就可以了,但是如果我走到下一行,则不会将小时数添加到属性{{1} }。

这是我的控制器的代码

StartPeriode

信息:视图模型

[HttpPost]
public ActionResult NieuweCreateActiviteit(CreateActiviteitViewModel a)
{
    int tempstartuur, tempstartmin;

    if (int.TryParse(a.BeginUur.Split(':')[0], out tempstartuur) && int.TryParse(a.BeginUur.Split(':')[1], out tempstartmin))
    {
        a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur);  // breakpoint
        a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin);
    }
    else
    {
        AddErrors(new IdentityResult("Start uur is geen uur"));
        return View(a);
    }

    // insert in database
    return View();
}

我的代码出了什么问题?

提前致谢

1 抱歉,我正在用荷兰语编程......如果您在翻译时遇到问题,可以在评论中问我。

1 个答案:

答案 0 :(得分:4)

AddHoursAddMinutes不会修改您调用它们的实例,它们会返回一个新值。所以:

a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddHours(tempstartuur);
a.NieuwActiviteit.StartPeriode = a.NieuwActiviteit.StartPeriode.AddMinutes(tempstartmin);

引用AddHours方法的documentation

  

返回一个新的DateTime,它将指定的小时数添加到此实例的值中。