function _setStartDate(oStartDate, bSetFocusDate, bSkipEvent){

		var oMaxDate = new CalendarDate(this._oMaxDate);
		oMaxDate.setDate(1);
		oMaxDate.setMonth(oMaxDate.getMonth() - this._getMonths() + 1);
		if (oMaxDate.isBefore(this._oMinDate)) {
			// min and max smaller than interval
			oMaxDate = new CalendarDate(this._oMinDate);
			oMaxDate.setMonth(oMaxDate.getMonth() + this._getMonths() - 1);
		}
		if (oStartDate.isBefore(this._oMinDate)) {
			oStartDate = new CalendarDate(this._oMinDate);
		} else if (oStartDate.isAfter(oMaxDate)){
			oStartDate = oMaxDate;
		}

		oStartDate.setDate(1); // always use begin of month
		var oLocaleDate = oStartDate.toLocalJSDate();
		this.setProperty("startDate", oLocaleDate, true);
		this._oStartDate = oStartDate;

		var oMonthsRow = this.getAggregation("monthsRow");
		oMonthsRow.setStartDate(oLocaleDate);

		_updateHeader.call(this);

		if (bSetFocusDate) {
			var oDateTime = this._getFocusedDate().toLocalJSDate();
			if (!oMonthsRow.checkDateFocusable(oDateTime)) {
				//focused date not longer visible -> focus start date
				this._setFocusedDate(oStartDate);
				oMonthsRow.setDate(oLocaleDate);
			} else  {
				oMonthsRow.setDate(oDateTime);
			}
		}

		if (!bSkipEvent) {
			this.fireStartDateChange();
		}

	}
@param {sap.ui.unified.calendar.CalendarDate} oStartDate The date to be set to start date
@param {boolean} bSetFocusDate Whether the date will be focused
@param {boolean} bSkipEvent Whether startDateChange event should be skipped
@private