0

我正在尝试将 jQuery.Gantt ( http://taitems.github.io/jQuery.Gantt/ ) 实现到我正在开发的网站中。我在 Date 对象上遇到了一个奇怪的问题。出于测试目的,我在 1 月 - 12 月创建了“里程碑”,每个里程碑的开始日期都是该月 - 16 日 - 2012 年。每个里程碑的结束日期都与今天相同,即 2013 年 6 月 3 日。

每个开始日期都显示晚一天(MONTH - 17, 2012)。结束日期变得很奇怪:1 月、2 月、11 月和 12 月都在时间线中的正确时间点结束,即 2013 年 6 月 3 日。夹在中间的八个月都在 2013 年 6 月 4 日晚些时候结束。

我已经完成了日期对象的规范,我的功能是以正确的格式构建它们:

_getDatesforMilestone = function(milestone){
    var testData = [];
    var toDate = milestone.completeDate.split("-");
    var fromDate = milestone.originalDate.split("-");

    toDate = new Date(toDate[0], toDate[1]-1, toDate[2]);
    fromDate = new Date(fromDate[0], fromDate[1]-1, fromDate[2]);

    testData = [
        {"from": "/Date(" + fromDate.getTime() + ")/", "to": "/Date(" + toDate.getTime() + ")/", "desc": "", "label": milestone.title, "customClass": "ganttDefault " + milestone.id + ""}  
    ];

    return testData
},

有没有其他人遇到过这个问题,或者知道为什么中间的 8 个月会这样回来?突然想到这几个月里的 30/31 天,甚至去年是闰年,但我现在一头雾水。

4

1 回答 1

2

这可能有点晚了,但它可能对其他寻求解决此问题的人有用。

也就是说,我刚刚遇到了类似的问题(日期显示为前一天),经过一番摆弄后,我意识到它与当地时区有关。

基本上,因为我目前在俄罗斯,当地时区是 GMT+4,所以如果我的 DateTime 字段的值为 mm/dd/yyyy 03:59:00 AM,则日期将提前一天显示。但是,只要我将日期设置为 mm/dd/yyyy 04:00:00 AM,日期就会正确显示在时间线上。

由于我不会成为将日期输入系统的人,并且我发现此“功能”是正确且非常有用的,因此我不会摆弄日期的处理,但在用户手册中我会问输入人员始终以 GMT 格式输入时间,这应该可以防止出现任何问题。

我希望这有帮助!

此致

于 2013-07-17T13:29:30.000 回答