我的应用程序正在运行时区 UTC + 05:30 的服务器。我的客户端计算机具有 UTC-05:00 时区。
现在假设他在文本框中输入 12/31/1989 并保存表单,当他在kendo网格中查看详细信息时,日期显示为 12/30/1989 而不是 12/31/1989 。
我通过更改我的电脑的时区来调试应用程序,在调试中我找到了
C#
public ActionResult GetPatients([DataSourceRequest] DataSourceRequest request, int includePatientId = 0)
{
return Json(this.patienModel.RetrieveActivePatients().ToDataSourceResult(request));
}
Kendo Grid
@(Html.Kendo().Grid<RxConnectEntities.Patient>
().Name("PatientList")
.Columns(columns =>
{
columns.Bound(p => p.PatientID).Visible(false);
columns.Bound(p => p.Name).Width(100);
columns.Bound(p => p.Gender).Width(80);
columns.Bound(p => p.DateOfBirth).Width(90)
.Format("{0:MM/dd/yyyy}")
.EditorTemplateName("DateOfBirth")
.Filterable(false).HtmlAttributes(new { id = "gridDateOfBirth" })
.ClientTemplate("#: kendo.toString(kendo.parseDate(data.DateOfBirth),'MM/dd/yyyy') #");
columns.Bound(p => p.PhoneNumber).Title("Phone Number").Width(110);
columns.Command(command =>
{
command.Custom("Select").Click("OnSelectRow");
command.Custom("Edit").Text("Edit").Click("EditGrid");
}).Width(120);
})
.Pageable(p => p.PageSizes(true))
.DataSource(dataSource => dataSource
.Ajax().ServerOperation(true)
.PageSize(5)
.Model(m => m.Id(p => p.PatientID))
.Read(read => read.Action("GetActivePatientList", "Order")
.Data(@"function(){
return{
includePatientId:" + (TempData["includePatientId"] ?? 0) + @"
}
}"))
.Destroy(delete => delete.Action("Deletepatient", "Order"))
)
)
答案 0 :(得分:1)
我遇到了强类型Kendo网格的类似问题。这听起来很奇怪,将强类型的一个改为JS对应解决了我的问题。我找不到任何解释,但我猜我可以明确告诉列类型=“日期”。我知道这不符合逻辑,但至少你可以试试。
schema: {
model: {
id: "PatientID",
fields: {
PatientID: {},
Name: {},
Gender: {}
DateOfBirth: { type: "date" }
}
}
}
答案 1 :(得分:0)
您可以使用DateTime.Date剥离日期的时间部分。
var testDateTime = DateTime.Now;
var testDate = dateAndTime.Date;
// Save testDate to SQL Server
这应该在保存时将时间部分设置为00:00:00
。