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

时间:2011-11-17 21:41:58

标签: 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...}

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

9 个答案:

答案 0 :(得分:80)

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

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

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

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

的值
  

Moment构造函数接受的任何内容,包括ISO8601日期   字符串如“2014-02-01”

因为它使用Moment.js。 Documentation here

更新示例:

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

答案 1 :(得分:47)

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

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

$('#calendar').fullCalendar('gotoDate', currentDate);

答案 2 :(得分:28)

根据machineAddict的评论,从版本2及更高版本开始,year, month and day已被defaultDate取代,Moment支持{{3}}等构造函数。 1}}日期字符串或Unix纪元。

所以,例如使用给定日期初始化日历:

ISO 8601

答案 3 :(得分:5)

您只需传递一个$('#calendar').fullCalendar({ defaultDate: new Date() }); 对象:
目前的日期:

$('#calendar').fullCalendar({
    defaultDate: new Date(2016, 4, 20)
});

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

version: '2'
services:
  registry:
    restart: always
    image: registry:2.3.1
    ports:
      - 5000:5000
    environment:
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/live/git.xxxx.com/fullchain.pem
      REGISTRY_HTTP_TLS_KEY: /certs/live/git.xxxx.com/privkey.pem
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
    volumes:
      - ./data:/var/lib/registry
      - /etc/letsencrypt:/certs
      - ./auth:/auth 

答案 4 :(得分:3)

我在gotoDate回调中呼叫viewRender时运气更好:

$('#calendar').fullCalendar({
  firstDay: 0,
  defaultView: 'basicWeek',
  header: {
    left: '',
    center: 'basicDay,basicWeek,month',
    right:  'today prev,next'
  },
  viewRender: function(view, element) {
    $('#calendar').fullCalendar( 'gotoDate', 2014, 4, 24 );
  }
});

在回调之外拨打gotoDate由于竞争条件而没有预期的结果。

答案 5 :(得分:2)

在2.1.1版本中,这有效:

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

$('#calendar').fullCalendar('gotoDate', '2014-05-01');

有关时刻/日期格式的文档:http://fullcalendar.io/docs/utilities/Moment/ 有关第2版升级的文档:https://github.com/arshaw/fullcalendar/wiki/Upgrading-to-v2

答案 6 :(得分:0)

如果您不想加载日历两次并且您没有实现defaultDate的版本,请执行以下操作:

更改以下方法:

function Calendar(element, options, eventSources) { ... var date = options.defaultDate ? options.defaultDate : new Date(); ... }

为:

{{1}}

答案 7 :(得分:0)

对于v5,请使用initialDate而不是defaultDate。只是重命名了选项

例如

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

答案 8 :(得分:0)

此功能可在v5.3.2中用于初始化后的日期

calendar.gotoDate( '2020-09-12' );

例如更改日期选择器

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

$(".date-picker").change(function(){
     var date = $(this).val();
     calendar.gotoDate( date );
});