Json 剑道UI图表根据时区在不同浏览器中转换日期
我在今天的一个项目中使用剑道UI图表,注意到不同浏览器中有一个奇怪的行为,我在x轴上有日期,它在不同时区的不同浏览器中自动转换日期Json 剑道UI图表根据时区在不同浏览器中转换日期,json,kendo-ui,Json,Kendo Ui,我在今天的一个项目中使用剑道UI图表,注意到不同浏览器中有一个奇怪的行为,我在x轴上有日期,它在不同时区的不同浏览器中自动转换日期 与UTC+5一样,UTC-6显示的日期范围为2014年3月1日至2014年3月31日,而UTC-6显示的日期范围为2014年2月28日至2014年3月30日。基本上,这是由于客户端和服务器时区之间的差异,以及这些日期在两侧被传递并重新创建为日期(JS)/日期时间(.NET)的形式造成的对象 基本上整个情况都被详细解释了。图表使用的数据源与网格使用的数据源相同,因此没
与UTC+5一样,UTC-6显示的日期范围为2014年3月1日至2014年3月31日,而UTC-6显示的日期范围为2014年2月28日至2014年3月30日。基本上,这是由于客户端和服务器时区之间的差异,以及这些日期在两侧被传递并重新创建为日期(JS)/日期时间(.NET)的形式造成的对象 基本上整个情况都被详细解释了。图表使用的数据源与网格使用的数据源相同,因此没有区别 下面是我的一个项目中的一些示例代码,您可以使用这些代码。检查requestEnd处理程序
@(Html.Kendo().Grid<KendoMVCWrappers.Models.Person>().Name("persons")
.DataSource(dataSource => dataSource
.Ajax()
.Events(ev => ev.RequestEnd("convert"))
.Model(model => model.Id(m => m.PersonID))
.Read(read => read.Action("GetPersons", "Home"))
.Update(up => up.Action("UpdatePerson", "Home"))
)
.Filterable()
.Columns(columns =>
{
columns.Bound(c => c.PersonID);
columns.Bound(c => c.Name);
columns.Bound(c => c.BirthDate);
columns.Command(cmd => cmd.Edit());
})
.Pageable()
.Sortable()
)
<script type="text/javascript">
function convert(e) {
if (e.response.Data && e.response.Data.length) {
var offsetMiliseconds = new Date().getTimezoneOffset() * 60000;
var persons = e.response.Data;
for (var i = 0; i < persons.length; i++) {
persons[i].BirthDate = persons[i].BirthDate.replace(/\d+/,
function (n) { return parseInt(n) + offsetMiliseconds }
);
}
}
}
</script>
祝你好运 在onRequestEnd中尝试解析本文中提到的日期时,出现空响应错误。 我通过在datasource解析方法而不是requestEnd中解析来解决这个问题
parse :function(data)
{
return ConvertToUTC(data);
}
function ConvertToUTC(data)
{
// iterate over all the data elements replacing the Date with a version
// that Kendo can work with.
$.each(data, function(index, item){
if(index == "data")
{
for(i =0 ;i< item.length; i++)
{
// Days is my date property in item collection
item[i].Days = item[i].Days.replace(/\d+/,
function (n) {
var time = parseInt(n);
return parseInt(time) + new Date(time).getTimezoneOffset() * 60000;
}
);
}
}
});
return data;
}
parse:函数(数据)
{
返回转换器TOUTC(数据);
}
函数转换器TOUTC(数据)
{
//迭代所有数据元素,用版本替换日期
//剑道可以配合。
$。每个(数据、功能(索引、项目){
如果(索引=“数据”)
{
对于(i=0;i
感谢您的回复,是的,我尝试过此解决方案,但响应为返回null。
parse :function(data)
{
return ConvertToUTC(data);
}
function ConvertToUTC(data)
{
// iterate over all the data elements replacing the Date with a version
// that Kendo can work with.
$.each(data, function(index, item){
if(index == "data")
{
for(i =0 ;i< item.length; i++)
{
// Days is my date property in item collection
item[i].Days = item[i].Days.replace(/\d+/,
function (n) {
var time = parseInt(n);
return parseInt(time) + new Date(time).getTimezoneOffset() * 60000;
}
);
}
}
});
return data;
}