Kendo UI Timezone显示日期落后一天

时间:2017-05-09 17:06:58

标签: jquery datetime

我正在与Kendo UI合作,每秒钟都在讨厌它,而且我觉得我找到了解决问题的方法,但我陷入了最后一段时间。所以我们的服务器都在PST上,无论出于何种原因,我们的Kendo UI网格显示的是实际值的一天后的日期。

他们在他们的网站上有一个“修复”,但它并没有完全插入。这就是我设法剔除的内容:

这是列代码:

columns.Bound(e => e.eventDate).Width(120).Title("Event Date").ClientTemplate("#= parseDateGrid(eventDate) #").EditorTemplateName("Date");

和解析日期的代码:

var offsetMiliseconds = new Date().getTimezoneOffset() * 60000;

function parseDateGrid(e) {
    var eventDate = null;
    if (e.sender) 
        eventDate = e.sender._value;
    else
        eventDate = e;

// eventDate = Fri Mar 19 2055 00:00:00 GMT-0400(东部夏令时)

    var sDate = eventDate.toString();

    sDate = sDate.replace(/\d+/,
     function (n) { return parseInt(n) + offsetMiliseconds });

// sDate =“Fri Mar 14400019 2055 00:00:00 GMT-0400(东部夏令时)”

    var eventDateFormatted = new Date(sDate);

    return eventDateFormatted;
}

UI返回“无效日期”,其中应该是eventDate字段。我认为问题是我错误地将字符串格式化为替换函数后的日期。感觉就像我在附近,提前感谢任何帮助。

编辑:

使用此功能:

    function addOffset(events) {
    for (var i = 0; i < events.length; i++) {
        var eventDate1 = new Date(events[i].eventDate); // for testing purpose

        var sdate = eventDate1.getTime() + offsetMiliseconds;
        var eventDateFormatted = new Date(sdate);

        return eventDateFormatted.toLocaleDateString();
    }
}

1 个答案:

答案 0 :(得分:1)

您不需要替换功能

使用 getTime()并向其添加毫秒数

var offsetMiliseconds = new Date().getTimezoneOffset() * 60000;
var eventDate = new Date("Fri Mar 19 2055 00:00:00 GMT-0400 (Eastern Daylight Time)"); // for testing purpose

var sdate =  eventDate.getTime() + offsetMiliseconds;
var eventDateFormatted = new Date(sdate);
alert(eventDateFormatted);

这里有一个jsfiddle为您提供中间警报

https://jsfiddle.net/u3h0bjyp/