如何在第一次初始化时将完整日历设置为特定的开始日期?

Ste*_*fan 48 javascript jquery fullcalendar

当我调用函数显示日历时,我想将初始月份设置为任意月份.

例如,用户选择在其他地方去年6月(2011年6月)的日期,并且我希望fullcalendar显示在4月(2010年4月)之前的月份显示.是的,这只是为了提出一个案例,而不是有意义;-))

在我随后调用显示功能之前,我尝试调用'gotodate',但这似乎不起作用

$('#calendar').fullCalendar( 'gotoDate', currentdate);
$('#calendar').fullCalendar({
    header: {left: 'prevYear,prev,today,next,nextYear',
         center: 'title', right: 'month,basicWeek,basicDay' etc...}
Run Code Online (Sandbox Code Playgroud)

有人最终可以提供一个如何正确执行此操作的示例吗?

Jam*_*rms 83

初始化时,您应该使用选项'year','month'和'date'来指定fullcalendar使用的初始日期值:

$('#calendar').fullCalendar({
 year: 2012,
 month: 4,
 date: 25
});  // This will initialize for May 25th, 2012.
Run Code Online (Sandbox Code Playgroud)

见函数setYMD(date,y,m,d)fullcalendar.js的文件; 请注意,使用了JavaScript setMonth,setDate和setFullYear函数,因此您的月份值必须为0(Jan为0).

更新:正如其他人在评论中指出的那样,现在正确的方法(编写此编辑时的V3)是将defaultDate属性初始化为一个值,即

Moment构造函数接受的任何内容,包括像"2014-02-01"这样的ISO8601日期字符串

因为它使用Moment.js. 文档在这里.

更新示例:

$('#calendar').fullCalendar({
    defaultDate: "2012-05-25"
});  // This will initialize for May 25th, 2012.
Run Code Online (Sandbox Code Playgroud)

  • 这在版本2中不起作用.使用`defaultDate`代替. (16认同)
  • 是的,我相信这是这个问题的"正确"答案.应使用"年,月,日".IIRC,布兰登的答案将加载2x ajax调用日历的日历.(如果使用json事件).一次用于初始加载使用默认日期,然后一次用于'gotoDate'事件json加载. (4认同)

Bra*_*don 49

你倒退了.首先显示日历,然后调用gotoDate.

$('#calendar').fullCalendar({
  // Options
});

$('#calendar').fullCalendar('gotoDate', currentDate);
Run Code Online (Sandbox Code Playgroud)

  • 嗯......它有效,但逻辑很奇怪,你不同意吗?所以我告诉日历要去某个地方,然后我告诉他:"等一下,那不是我的意思.我真正的意思是这个......无论如何,感谢你们的快速回报,它的工作正常!Stefan (6认同)
  • 另一个答案(由Jammerms提供)显然更好.请重新考虑您接受的答案. (5认同)

Stu*_*tLC 29

根据machineAddict的评论,从版本2及更高版本开始,year, month and day已被替换defaultDateMoment,支持构造函数,如ISO 8601日期字符串或Unix Epoch.

因此,例如,使用给定日期初始化日历:

$('#calendar').fullCalendar({
    defaultDate: moment('2014-09-01'),
    ...
});
Run Code Online (Sandbox Code Playgroud)


小智 6

对于 v5,请使用初始日期而不是默认日期。简单地重命名选项

例如

var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
     ...
     initialDate: '2020-09-02',
     ...
});
Run Code Online (Sandbox Code Playgroud)


CIR*_*CLE 5

您只需传递一个Date对象:
对于当前日期:

$('#calendar').fullCalendar({
    defaultDate: new Date()
});
Run Code Online (Sandbox Code Playgroud)

具体日期'2016-05-20':

$('#calendar').fullCalendar({
    defaultDate: new Date(2016, 4, 20)
});
Run Code Online (Sandbox Code Playgroud)