无效的日期时间用1个月数字代替2个月

本文关键字:数字 2个月 1个 日期 时间 无效 | 更新日期: 2023-09-27 18:15:40

好的,这里有一个"可爱"的问题:

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

我是这样创建Table的:

@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")

我为荷兰语变量感到抱歉,但我认为你得到了要点(如果没有让我知道,我会把它们改成英语)

ok,现在当这个列表中的选择改变时,调用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个月数字代替2个月

我建议使用正则表达式。

试试这个

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