无效的日期时间,1个月的数字而不是2

时间:2014-07-30 09:27:08

标签: c# jquery asp.net-mvc

Oke所以这是一个'可爱'的问题:

我有一个包含日期(和其他信息)的列表,这些日期是由我的控制器传递给页面的模型填充的。

这就是我创建表格的方式:

@Html.Grid(Model).Named("grid").Columns(columns =>
            {
                columns.Add()
                                    .Encoded(false)
                                    .Sanitized(false)
                                    .SetWidth(30)
                                    .Titled("Verzenden")
                                    .RenderValueAs(n => Html.CheckBox("Verzonden", !n.Verzonden));
                columns.Add(n => n.StartDatum).Titled("Start datum").Sortable(true).SetWidth(100);
                columns.Add(n => n.EindDatum).Titled("Eind datum").Sortable(true).SetWidth(100);
                columns.Add(n => n.Impact).Titled("Impact").Sortable(true).SetWidth(100);
                columns.Add(n => n.NotificatieType.Type).Titled("Type").Sortable(true).SetWidth(100);
                columns.Add(n => n.Omschrijving).Titled("Omschrijving").Sortable(true).SetWidth(100);
                columns.Add(n => n.Diensten).Titled("Diensten").Sortable(true).SetWidth(100);
                columns.Add(n => n.ID).Titled("ID").Sortable(true).SetWidth(100);
            }).Filterable().SetLanguage("nl")

我很抱歉荷兰变量,但我认为你得到了主旨(如果没有知道,我会把他们改成英语)

现在,当此列表中的选择发生更改时,将调用onRowSelect方法:

$(function ()
{
    pageGrids.grid.onRowSelect(function (e) 
    {
        var startDateArr = e.row.StartDatum.toString().split(' ');
        var startDate = startDateArr[0];
        document.getElementById('startDatum').value = startDate;
    }
}

e.row.startDatum包含以下内容:“25-7-2014 13:00:00” 所以在分割后startDate =“25-7-2014”

document.getElementByID('startDatum')指的是:

<input type="date" id="startDatum" />

这里的问题是-7-,因为它不是有效的日期时间(或者至少不是我的输入所接受的。

输入需要2个数字的月份(或日期)所以它必须是“25-07-2014” 现在我知道一种解决这个问题的肮脏方法:

var dateArr = startDate.split('-');
var validDate = "";
for (i = 0; i < 3; i++)
{
if(dateArr[i].length < 2)
{
    validDate += "0" + dateArr[i] + '-';
}
else if (dateArr[i].length == 2)
{
    validDate += dateArr[i] + '-';
}
else if (dateArr[i].length == 4) // for the year and the end of the date string.
{
    validDate += dateArr[i];
}
}
document.getElementById('startDatum').value = validDate;

但这很脏,我想要一个干净有效的方法来做这个,有什么建议吗?

修改

我认为上面的代码可以工作(所以我没有真正测试它)但它仍然没有设置我的日期时间值(或者至少日期时间框仍然显示dd-mm-jjjj)

document.getElementById('startDatum').value = validDate是正确的做法吗?

编辑工作但不干净

目前有这样的工作方式:但是,仍然会有更好,更清洁的方式。

var startDateArr = e.row.StartDatum.toString().split(' ');
var startDate = startDateArr[0];
startDate = startDate.replace(/(\b\d\b)/g, "0$1");
var dateArr = startDate.split('-');
var validDate = dateArr[2] + "-" + dateArr[1] + "-" + dateArr[0];
$('#startDatum').val(validDate);

1 个答案:

答案 0 :(得分:1)

我建议使用正则表达式。

试试这个

startDate = startDate.replace(/(\b\d\b)/g, "0$1");