javascript - 如何在 Bootstrap 日期时间小部件中添加或减去日期、天、月?

标签 javascript datetime twitter-bootstrap datejs

我在模板中使用 Bootstrap DateTime 小部件,我并排放置了 2 个小部件(从、到),以根据需要选择特定范围的日期、小时或月份。我已链接这两个小部件,以便用户始终可以选择小于“从”范围的“到”范围。为此,我添加或减去了日期,例如:

        var evDate = ev.date;
        if (evDate != null) {
            $('.'+reportCategoryTo.id).
                        datetimepicker('setStartDate', evDate);
            var evDateObject = new Date(evDate.valueOf());
            var reportDateTimeCategoryFrom = report_date_time_category[0][0];
            var reportDateTimeCategoryTo = report_date_time_category[1][0];
            if (reportDateTimeCategoryFrom.category.indexOf("Daily") !== -1) {
                var newDate = evDateObject.setDate(evDateObject.getDate() + 31);
            }
            else if (reportDateTimeCategoryFrom.category.indexOf("Monthly") !== -1) {
                var newDate = evDateObject.setDate(evDateObject.getDate() + 365);
            }
            else {
                var newDate = evDateObject.setDate(evDateObject.getHours() + 24);
            }

            var newDateObject = new Date(newDate);
            $('.'+reportCategoryTo.id).
                        datetimepicker('setEndDate', newDateObject);
            }
        else {
            console.log('The change is null',evDate);
            $('.'+reportCategoryTo.id).
                            datetimepicker('setStartDate', null);
            $('.'+reportCategoryTo.id).
                            datetimepicker('setEndDate', null);
            }
        });

当用户选择 5 月 30 日或类似的内容时,这不会显示范围。 然后我发现 Datejs 它有助于添加或减去日期等。我像这样使用 Datejs:

            if (reportDateTimeCategoryFrom.category.indexOf("Daily") !== -1) {
                var newDate = evDateObject.setDate(evDateObject.getDate().add(31).days());
            }
            else if (reportDateTimeCategoryFrom.category.indexOf("Monthly") !== -1) {
                var newDate = evDateObject.setDate(evDateObject.getDate().add(365));
            }
            else {
                var newDate = evDateObject.setDate(evDateObject.getHours().addHours(24));

但是我的控制台提示这个错误:

TypeError: evDateObject.getDate(...).add is not a function

我已经导入了 date.js 文件,但即便如此,这也不起作用。请帮忙!

最佳答案

Datejs已被放弃,我不推荐使用它。 Read here .

您可能需要考虑Moment.js ,它还有日期时间算术函数。

例如:

var m = moment(evDateObject.getDate());
m.add('months', 1);
evDateObject.setDate(m.toDate());

关于javascript - 如何在 Bootstrap 日期时间小部件中添加或减去日期、天、月?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120941/

相关文章:

javascript - 使用javascript从jsp中的数据库检索值时如何检查单选按钮

javascript - 页面加载后如何执行 JavaScript?

java - 从 InputStream 解析日期时出现 ParseException

html - Bootstrap .row类的正确用法

javascript - 通过 javascript 和 php 检查上传数量

javascript - 确认删除警报代码不太正确

html - Bootstrap 导航栏底部固定在平板电脑上使用屏幕键盘移动

jquery - 禁用悬停在特定的单元格上

mysql - select 语句给出了一个没有任何表格的日期范围?

mysql - 如何给已有的mysql表添加时间戳