我在我的解决方案中使用了kendo UI,如下面的代码
<div id="myGrid" data-role="grid"
data-bind="source: viewModel"
data-sortable="true"
data-pageable="true"
data-filterable="true"
data-resizable="true"
data-editable = "incell"
data-selectable="true"
data-columns='[
{ field: "Name", title: "Name" },
{ field: "StartDate", title: "Start date", format: "{0:dd/MM/yyyy}"},
{ field: "EndDate", title: "End date", format: "{0:dd/MM/yyyy}"},
{ field: "ClosingDate", title: "Closing date", format: "{0:dd/MM/yyyy}"}]'
data-toolbar ='[{name:"create"},
{name:"save"}]'>
</div>
viewModel中的字段具有&#34; date&#34;类型。
让我们说我选择开始日期为16/05/2014,之后我保存更改。但更新后,我看到开始日期是15/05/2014。它发生在网格中的每个日期单元格中。
为什么日期比我选择的要少。
有没有办法解决这个问题?
答案 0 :(得分:0)
请参阅此处给出的答案:javascript Date.parse
我认为问题是由您使用的浏览器引起的。我在IE中使用日期格式时遇到了很多麻烦。我发现在Chrome或Firefox中创建日期确切地给了我想要的东西,但在IE中,在创建或解析日期时,除了MM / dd / yyyy之外的任何格式在解析后都会在Date对象中给出错误的日期。
我的建议与我链接的答案相同:不使用列的“格式”字段,而是使用模板并自行解析。
data-columns='[
{ field: "Name", title: "Name" },
{ field: "StartDate", title: "Start date", template: "# parseDate(StartDate) #"},
{ field: "EndDate", title: "End date", template: "# parseDate(EndDate) #"},
{ field: "ClosingDate", title: "Closing date", template: "# parseDate(ClosingDate) #"]'
然后拥有parseDate(date)
功能:
function parseDate(date) {
if (date == null) return '';
//using the .slice() method keeps the leading '0' if MM or dd is single digit
var rtn = ('0' + date.Date()).slice(-2) + '/' +
('0 + (date.Month() + 1)).slice(-2) + '/' +
date.FullYear();
return rtn;
}