0

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

  • 每月的第一个星期一:披萨
  • 每月的第二个星期一:意大利面
  • 每月第三个星期一:汉堡
  • 每月第四个星期一:牛肉
  • 每月的第五个星期一:汤
  • 每月第一个星期二:炸鱼和薯条
  • 每月第二个星期二:土豆
  • 每月第三个星期二:...

ETC..

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

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

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 ..)混合?

提前致谢。

4

1 回答 1

1

我认为有两种选择:

  1. 创建一个支持此类重复事件的 Google 日历,并将其添加到 fullcalendar,如下所示

    <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>
    
于 2013-09-18T18:54:37.487 回答