KendoUI 2013.3.1324:timezoneoffset和负毫秒值

时间:2014-02-11 18:36:03

标签: asp.net-mvc datetime kendo-ui kendo-grid timezone-offset

我已将项目从2013.3.1119更新到2013.3.1324版本(使用ASP.NET MVC包装器) 我在更新后看到以下内容:grid invalid date error DateTime以

的形式传递给客户端
"/Date(-498283200000)/"

如果不到1970年和

"/Date(498283200000)/"

如果超过1970年

我在 kendo.all.js 文件中找到了一个奇怪的代码

dateRegExp = /^\/Date\((.*?)\)\/$/,
tzOffsetRegExp = /[+-]{1}\d+/,

...

if (value && value.indexOf("/D") === 0) {
    date = dateRegExp.exec(value);
    if (date) {
        date = date[1];

        tzoffset = tzOffsetRegExp.exec(date);
        date = parseInt(date, 10);

        if (tzoffset) {
            date -= (parseInt(tzoffset[0], 10) * kendo.date.MS_PER_MINUTE);
        }

        return new Date(date);
    }
}

调试信息: 初始值: initial value

解析日期值: date value

解析tzo值: Parsed tz value

最后,结果日期值: result date value

其实我不需要时间,只需要日期。模型属性类型是常规DateTime。 此外,我在剑道网站上找不到此版本的任何问题。

我做错了什么,我需要做什么? (改变剑道源不是我认为的选择......)

示例:

console

现场演示:http://jsbin.com/vebed/2/edit?html,js,output

2 个答案:

答案 0 :(得分:0)

以下内容:

alert(kendo.parseDate("/Date(-498283200000)/"))

显示

Thu Mar 18 1954 22:00:00 GMT+0200 (FLE Standard Time)

使用最新的官方版Kendo UI。

确保您没有使用旧版本。

这是一个现场演示:http://jsbin.com/vebed/1/edit

答案 1 :(得分:0)

问题已在内部版本2013.3.1408中修复

新代码是:

if (value && value.indexOf("/D") === 0) {
    date = dateRegExp.exec(value);
    if (date) {
        tzoffset = date = date[1];

        date = parseInt(date, 10);

        tzoffset = tzoffset.substring(1).split(signRegExp)[1];

        if (tzoffset) {
            date -= (parseInt(tzoffset, 10) * kendo.date.MS_PER_MINUTE);
        }

        return new Date(date);
    }
}