【问题标题】:fullcalendar: how can i get the first and last day of the relevant viewed month (and not the days of of the prev \ next month)fullcalendar:我怎样才能得到相关查看月份的第一天和最后一天(而不是上一个\下个月的天数)
【发布时间】:2017-09-21 00:04:28
【问题描述】:

我想知道在全日历中查看的主要月份的第一天和最后一天是什么。

这是相关的月份视图:

     events: function (start, end, timezone, callback) { //custom events function to be called every time the view changes
          alert (start.format());
          alert (end.format());
     },

当我在本月(2017 年 4 月)运行此代码时,我得到: start.format()=2017-03-26 end.format()= 2017-05-07 我想得到以下日期: 开始时间:2017-04-01 结束:2017-04-30

有什么方法可以让我在事件函数中获取这个日期?

非常感谢

附言

我不想使用“showNonCurrentDates: false”选项

【问题讨论】:

  • 随着v4的发布,它变得容易多了。 <viewObject>.currentStart()<viewObject>.currentEnd()。例如,datesRender: function(info) { console.log(info.view.currentStart.format("YYYY-MM-DD")); console.log(info.view.currentEnd.format("YYYY-MM-DD")); }
  • @Fr0zenFyr 你太棒了,解决了我的问题,救了我的命。我在这个解决方案中搜索了 1 个小时。谢谢亲爱的。
  • 很高兴它帮助了你@Kamlesh。干杯!

标签: javascript jquery css ajax fullcalendar


【解决方案1】:

我通过使用activeStartactiveEnd 视图对象属性实现了预期的结果。

https://fullcalendar.io/docs/view-object

【讨论】:

    【解决方案2】:

    没有直接的方法可以通过“事件”回调获取此值,但您可以使用稍微笨拙的解决方法:

    viewRender 回调使您可以访问当前视图的“视图”对象,其中包含与视图试图表示的间隔相关的intervalStartintervalEnd 属性(请参阅https://fullcalendar.io/docs/v3/view-object)。在月份视图中,这将是月份的开始和结束。如果您将这些捕获到范围比日历更高的变量中,则可以根据需要在事件和/或 eventsAfterAllRender 回调中重新使用它们。

    var intervalStart, intervalEnd; //variables with higher scope level
    
    $('#calendar').fullCalendar({
       //...your options here...
        viewRender: function (view, element)
        {
            intervalStart = view.intervalStart;
            intervalEnd = view.intervalEnd;
        },
        events: function(start, end, timezone, callback) {
            console.log(intervalStart.format("YYYY-MM-DD"));
            console.log(intervalEnd.format("YYYY-MM-DD"));
            //...etc
        }
    });
    

    请注意,intervalEnd专有,因此如果月份是 4 月,intervalEnd 将被指定为 5 月 1 日。

    虽然已经证明了这一点,但使用内置的 showNonCurrentDates:false 选项似乎更简洁,就像您之前的问题一样。

    【讨论】:

    • 再次感谢。你建立了完整的日历吗? :)
    • 不。我只是经常使用它,而且我对文档很熟悉。这家伙写的,我相信。 stackoverflow.com/users/96342/arshaw 但看起来他最近在这里不太活跃。
    • ps:这个 view.intervalEnd 返回下个月的第一天(即 2017-05-01)。获取当月的最后一天使用(即 2017-04-30)intervalEnd = view.intervalEnd.subtract(1, 'days');
    • 是的,我知道 - 这就是我所说的 intervalEnd 是一个专有日期(如 fullCalendar 文档中所述)的意思。
    • 随着v4的发布,它变得容易多了。 <viewObject>.currentStart()<viewObject>.currentEnd()。例如,datesRender: function(info) { console.log(info.view.currentStart.format("YYYY-MM-DD")); console.log(info.view.currentEnd.format("YYYY-MM-DD")); }
    【解决方案3】:

    添加此设置showNonCurrentDates: false,。使用此设置,不属于当前月份的日期将不会显示。来自您的事件回调当月的第一天和下个月的第一天将分别显示为startend

     $('#calendarLoansByRequestDate').fullCalendar({
                // Other settings
                showNonCurrentDates: false,
                events: function (start, end, timezone, callback) { //custom events function to be called every time the view changes
                    alert(start.format());
                    alert(end.format());
                }
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-07
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 2015-07-09
      相关资源
      最近更新 更多