如何在fullcalendar控件中获得Month和Week的第一个星期一

时间:2016-01-14 09:39:51

标签: javascript jquery asp.net-mvc-5 fullcalendar

我有一个与fullCalendar控件相关的案例。我将在周一至周五展示Days,并添加了Custom Button,名为Add new Appointment。当用户点击此按钮时,我们需要显示月视图的第一个星期一日期,如果是周视图,我们需要显示该周的第一个日期(星期一)。 '

我这样做到现在为IST时区工作但我的客户是CST / EST,需要前一天。示例 - 月视图如果我去2月并点击添加新的应该02-02-2016,但它是在2015年1月31日。

function processDateTimeForNewCalendar() {
    debugger;
    var mondayForWeek = common.getMondayForCurrentWeek(new Date());

    var dateHeader = $('div.fc-center h2').text();
    var view = $('#calendar').fullCalendar('getView');
    var date, sTime, eTime;
    var currentDate = new Date();
    if (view.name === 'month') {
        debugger;
        var currentMonth = dateHeader.split(" ")[0];
        var currentYear = dateHeader.split(" ")[1];
        var monthInNo = common.getMonthNumberByMonthName(currentMonth);

        var temp = currentDate.getDate() + "-" + currentMonth + "-" + currentYear + " " + currentDate.getHours() + ":" + currentDate.getMinutes()
        var tempDate = new Date(temp);
        var mondayForWeek = common.getMondayForCurrentWeek(tempDate);

        if ((currentDate.getMonth() + 1) === monthInNo)
            date = new Date(currentDate.getDate() + "-" + currentMonth + "-" + currentYear + " " + currentDate.getHours() + ":" + currentDate.getMinutes());
        if ((currentDate.getMonth() + 1) < monthInNo || (currentDate.getMonth() + 1) > monthInNo)
            date = new Date(view.intervalStart);


        sTime = moment(date).format("hh:mm A");
        eTime = moment(date).add(30, 'minutes').format("hh:mm A");
    }
    if (view.name === 'agendaWeek' || view.name === 'agendaDay') {
        date = new Date(view.start);
        date = moment(date).format("MM/DD/YYYY");
        sTime = moment(currentDate).format("hh:mm A");
        eTime = moment(currentDate).add(30, 'minutes').format("hh:mm A");
    }
    $(CALENDAR.ApptStartDateById).val(moment(date).format("MM/DD/YYYY"));
    $(CALENDAR.ApptEndDateById).val(moment(date).format("MM/DD/YYYY"));
    $(CALENDAR.ApptStartTime).timepicker("setTime", sTime);
    $(CALENDAR.ApptEndTime).timepicker("setTime", eTime);

    $(CALENDAR.Duration).val(calculateDuration());
    $(CALENDAR.ApptStartDateById).datepicker("update", date).datepicker('fill');
    $(CALENDAR.ApptEndDateById).datepicker("update", date).datepicker('fill');
}

请帮我解决这个问题。

谢谢, AMOD

2 个答案:

答案 0 :(得分:0)

您可以使用$('calendar selector').fullCalendar('getView').start获取当前视图的开始日期;

答案 1 :(得分:0)

我通过找到每月的第一天并检查它是否是星期日以其他方式完成。如果是,则添加+1天。检查以下代码 -

function getFirstDayOfMonth(d) {                
        d.setMonth(d.getMonth(), 1);        
        // if sunday add +1 day
        if (d.getDay() === 0)
            d.setDate(d.getDate() + 1, 1);
        return d;
    }

希望,这是使用fullCalendar查找月份第一天的替代解决方案。