Javascript日期减30分钟/完整日历调整错误

时间:2015-11-13 12:54:48

标签: javascript css date yii fullcalendar

我正在使用javascript日历,它允许重新调整事件大小,即增加/减少事件持续时间。出于某种原因,该活动给了我结束日期加上30分钟。因此,我需要减去30分钟的结果。目前,事件调整大小的工作时间为30分钟。

我设法得到了日期,请在此处查看对象: enter image description here

我对Javascript不是很熟悉,并且很难理解如何在end显示W时真正了解信息,但最后我能够使用el.end.format("YYYY-MM-DD H:mm:SS")。查看结束对象: enter image description here

使用el.end.format("YYYY-MM-DD H:mm:SS")我需要减去30分钟。我已经能够使用:

实现这一目标
var datePart1 = el.end.format("YYYY-MM-DD H:");
var datePart2 = el.end.format(":SS");
var trueEnd = el.end.format("mm") == 30 ? datePart1 + "00" + datePart2 : datePart1 + "30" + datePart2;

这不是一个干净的方法来做到这一点,例如,如果我改变日历以允许15分钟步骤调整大小,这个解决方案将无法修改。任何人都可以告诉我如何使用el.end.format("YYYY-MM-DD H:mm:SS")并简单地删除30分钟,或者如果有更简洁的方法来执行此操作而不使用格式,将非常感激。此外,如果有人可以告诉我为什么W显示在对象的end参数中以及如何最好地处理它,那将对未来有所帮助。

我可以提供的任何其他信息都告诉我。

重要

我原来的问题试图错误地解决这个问题。虽然我能够解决Saransh提出的解决方案的问题,但是工作代码示例:

var blah = new Date(el.end.format("YYYY-MM-DD H:mm:SS"));
blah.setMinutes(blah.getMinutes()-30);

这不是一个完整的解决方案。调整事件大小时,事件显示的时间也是错误的半小时,因此我必须在提交更改时将库修改为减去半小时,并且在调整事件大小时动态更改活动本身所显示的时间。因此,在处理调整大小时,几乎可以更改任何时间计算实例。

我将日历放在一个单独的页面上,并包括最低限度。这样做,调整大小按预期执行。然后我去了原始页面并逐个删除了js / css文件。最后,我看到bootstrap css文件通过向单元格大小添加几个像素导致问题,因此在计算使用单元格高度的时间时会导致问题。导致该问题的一行是

* {box-sizing: border-box;}

因此,在日历的PHP视图文件的最顶部,我只是添加了:

<style>
    * {box-sizing: content-box;}
</style>

单元格高度现在符合预期,调整大小时间计算在所有方面都完美运行。我刚才遇到过这个问题,所以当然如果您使用日历并在项目中包含这个问题,请务必检查CSS文件以查看它们是否导致冲突。希望这将有助于未来的人,因为我花了更多的时间试图找出一个黑客,而不是我用一行css完全解决问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Date构造函数:

var myTime = new Date(myValue - 30* 60000);

答案 1 :(得分:1)

date = new Date()
date.setMinutes(date.getMinutes()-30)

会做你想做的事。