无效的日期时间用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);
我建议使用正则表达式。
试试这个
startDate = startDate.replace(/('b'd'b)/g, "0$1");