Json 剑道UI图表根据时区在不同浏览器中转换日期

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)的形式造成的对象 基本上整个情况都被详细解释了。图表使用的数据源与网格使用的数据源相同,因此没

我在今天的一个项目中使用剑道UI图表,注意到不同浏览器中有一个奇怪的行为,我在x轴上有日期,它在不同时区的不同浏览器中自动转换日期


与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;

        }