Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 剑道UI UTC日期问题_Date_Datepicker_Kendo Ui_Utc - Fatal编程技术网

Date 剑道UI UTC日期问题

Date 剑道UI UTC日期问题,date,datepicker,kendo-ui,utc,Date,Datepicker,Kendo Ui,Utc,我有一个奇怪的问题,我们网格的编辑模板在编辑日期时引起问题 日期以UTC时区存储在服务器上。我使用以下模式设置时区:- private DateTime\u minDate; 公共日期时间MinDate { 获取{return\u minDate;} 设置{u minDate=DateTime.SpecifyKind(value,DateTimeKind.Utc);} } 使用WebApi OData服务将日期加载到网格中 { “Id”:50088, “ProductId”:101437, “

我有一个奇怪的问题,我们网格的编辑模板在编辑日期时引起问题

日期以UTC时区存储在服务器上。我使用以下模式设置时区:-

private DateTime\u minDate;
公共日期时间MinDate
{
获取{return\u minDate;}
设置{u minDate=DateTime.SpecifyKind(value,DateTimeKind.Utc);}
}
使用WebApi OData服务将日期加载到网格中

{
“Id”:50088,
“ProductId”:101437,
“勇气”:“12224000”,
“ISIN”:“CH0122240002”,
“说明”:“业绩优异奖金证书,多股”,
“提供商”:“CSIB”,
“警报提示器”:“KO UN”,
“保护百分比”:1.0,
“ProtectionType”:“保护丢失”,
“基础货币”:“美元”,
“BarrierLevel”:190.0,
“障碍百分比”:70.0,
“BarrierType”:“低”,
“BarrierId”:0,
“EventStructureId”:170378,
“日期”:“2013-11-20T00:00:00Z”,
“注释”:空,
“确认”:假,
“拒绝”:错误
}
OData服务正确地序列化UTC日期和完整地到达UI的日期

在使用日期选择器控件编辑日期但仅使用键盘键入之后,数据将以错误的格式发送回服务器

{
“odata.metadata”:”http://local.host:51850/web/odata/$metadata#PendingBarrierAlerts/@Element“,
“Id”:50088,
“ProductId”:101437,
“勇气”:“12224000”,
“ISIN”:“CH0122240002”,
“说明”:“业绩优异奖金证书,多股”,
“提供商”:“CSIB”,
“警报提示器”:“KO UN”,
“保护百分比”:1.0,
“ProtectionType”:“保护丢失”,
“基础货币”:“美元”,
“BarrierLevel”:190.0,
“障碍百分比”:70.0,
“BarrierType”:“低”,
“BarrierId”:0,
“EventStructureId”:170378,
“日期”:“2013-11-20T23:00:00Z”,
“注释”:空,
“确认”:假,
“拒绝”:错误
}
请注意,日期的时间已更改


如何在网格中编辑UTC日期,并使用OData作为传输和远程数据源将其正确返回到服务器?

日期始终在客户端创建为本地日期(而不是UTC日期)。为了拦截并避免结果中发生的情况,您需要在网格/数据源开始使用这些日期之前使用requestEnd事件来转换这些日期


您可以看到类似的方法。

我用来避免@PeturSubev所说的是在我的
数据源.model
中实现一个正确初始化日期的
parse
函数

dataSource:{
    ...
    schema:{
        parse:function (response) {
            $.each(response, function (idx, elem) {
                if (elem.Date && typeof elem.Date === "string") {
                    elem.Date = kendo.parseDate(elem.Date, "yyyy-MM-ddTHH:mm:ss.fffZ");
                }
            });
            return response;
        }
    }
}

所以我让KendoUI和他们想要的任何日期一起工作