Fullcalendar jquery插件每月重复发生的事件日/周数

时间:2013-09-18 14:23:53

标签: javascript jquery fullcalendar

我正试图通过插件FullCalendar显示一个食堂的菜单。 菜单应该是这样的:

  • 月份的第一个星期一:披萨
  • 每月的第二个星期一:意大利面
  • 每月的第3个星期一:汉堡包
  • 月份的第4个星期一:牛肉
  • 月份的第5个星期一:汤
  • 月的第一个星期二:鱼和薯条
  • 月的第二个星期二:potatos
  • 月的第3个星期二:...

等。

我需要以这种方式重复发生事件..但我不知道它是否可能以及如何实现它......我很困惑。

目前我的代码看起来像这样:

var date = new Date();
var d = date.getDate();
var m = date.getMonth();
var y = date.getFullYear();

$('#calendar').fullCalendar({
    events: [
        { start: new Date(y, m, 1), title: 'Pasta all\'olio e parmigiano' },
        { start: new Date(y, m, 2), title: 'Pasta all\'olio e parmigiano' },
        ...

有没有办法根据需要设置正确的日期并在Fullcalendar中重复使用,使用javascript date()函数,或者与其他技术混合使用(PHP / MySQL ..)?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我认为有两种选择:

  1. 创建支持此类重复活动的Google日历,并将其添加到fullcalendar,如here所示:

    <script type='text/javascript' src='fullcalendar/gcal.js'></script>
    <script type='text/javascript'>
        $(document).ready(function() {
            $('#calendar').fullCalendar({
                events: 'http://www.google.com/your_feed_url/'
            });
        });
    </script>
    
  2. 计算您自己的日期事件,因为fullcalendar不支持重复发生的事件。您可以使用datejs库作为一点帮助:

     
    <script type='text/javascript' src='date.js'></script>
    <script type='text/javascript'>
        function getRecurrences(date, count) {
            var nthOccurence = Math.ceil((date.getDate() - date.getDay()) / 7),
                dates = [date];
    
            for(var i = 0; i < count; i++) {
                var nextDate = dates[dates.length - 1].clone().addMonths(1);
                nextDate.moveToNthOccurrence(date.getDay(), nthOccurence);
                dates.push(nextDate);
            }
    
            return dates;
        }
    
        var date = new Date(2013, 8, 18); // 3rd Wednesday
        var nextThreeOccurences = getRecurrences(date, 3);
    </script>