@openui5/sap.ui.core
Version:
OpenUI5 Core Library sap.ui.core
892 lines (830 loc) • 33.9 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2026 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define([
"sap/base/i18n/Formatting",
'sap/ui/core/date/UniversalDate',
'sap/ui/core/Locale',
'sap/ui/core/LocaleData',
'sap/base/assert'
],
function (Formatting, UniversalDate, Locale, LocaleData, assert) {
"use strict";
function clone(oUniversalDate) {
assert(oUniversalDate instanceof UniversalDate, "method accepts only instances of UniversalDate");
return oUniversalDate.createDate(oUniversalDate.constructor, [oUniversalDate.getJSDate()]);
}
/**
* Provides helpers to execute common calculations on <code>UniversalDate</code> instances.
*
* @namespace
* @alias module:sap/ui/core/date/UniversalDateUtils
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
var UniversalDateUtils = {};
/**
* Calculates a date range based on a given base date, duration and unit.
*
* If no or a null base date is given, today (<code>UniversalDateUtils.createNewUniversalDate()</code>) will be used as
* base date, represented in the current session's default calendar type.
*
* If the duration is 0, the base date will be used and is part of the returned range. 0 WEEK means this week.
* If the duration is positive, the base date will be used as start date of the range. 1 WEEK means next week.
* If the duration is negative, the base date will be used as end date.
* This method expects only integer values for <code>iDuration</code>,
* any fractional part will be ignored (truncated).
*
* The unit can be one of <code>"DAY"</code>, <code>"WEEK"</code>, <code>"MONTH"</code>,
* <code>"QUARTER"</code> or <code>"YEAR"</code>.
*
* The first value in the returned array will be the first day within the calculated range
* (start date) with the time portion set to the beginning of the day. The second value in the array
* will be the last day within the range (the inclusive end date) with the time portion set to the
* end of the day.
*
* The returned dates will use the same calendar as the given base date. If no base date was given,
* they will use the session's default calendar type.
*
* @param {int} iDuration
* Positive or negative integer value that defines the duration of the date range.
* @param {string} sUnit
* Unit of <code>iDuration</code>, one of <code>"DAY", "WEEK", "MONTH", "QUARTER" , "YEAR"</code>.
* @param {sap.ui.core.date.UniversalDate} [oBaseDate=now]
* Universal date used as basis for the range calculation, defaults to now
* @param {boolean} [bBaseOnUnit]
* Resets the <code>oBaseDate</code> to the first day of the corresponding <code>sUnit</code> where
* <code>oBaseDate</code> is included. E.g. for the unit <code>"MONTH"</code>, it will reset to the
* first day of that month. This option is applicable to the units "WEEK","MONTH","QUARTER","YEAR",
* for unit "DAY" it has no effect. For unit "WEEK", the first day depends on the locale settings
* (see method {@link #.getWeekStartDate})
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with two dates representing the calculated range (<code>[startDate, endDate]</code>)
* If the <code>iDuration</code> is zero or not a valid number, an empty array will be returned.
* @throws {TypeError}
* If <code>oBaseDate</code> is not an instance of <code>UniversalDate</code>
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getRange = function (iDuration, sUnit, oBaseDate, bBaseOnUnit) {
if (bBaseOnUnit === undefined ) {
bBaseOnUnit = true;
}
if (isNaN(iDuration)) {
throw new TypeError("duration is NaN, but is " + iDuration);
}
// restrict duration to integer values
iDuration = Math.trunc(iDuration);
var oStartDate = UniversalDateUtils.resetStartTime(oBaseDate == undefined ? null : oBaseDate),
oEndDate;
if (bBaseOnUnit) {
switch (sUnit) {
case "MINUTE":
case "HOUR":
oStartDate = UniversalDateUtils.createNewUniversalDate();
break;
case "DAY":
break;
case "WEEK":
oStartDate = UniversalDateUtils.getWeekStartDate(oStartDate);
break;
case "MONTH":
oStartDate = UniversalDateUtils.getMonthStartDate(oStartDate);
break;
case "QUARTER":
oStartDate = UniversalDateUtils.getQuarterStartDate(oStartDate);
break;
case "YEAR":
oStartDate = UniversalDateUtils.getYearStartDate(oStartDate);
break;
default:
throw new TypeError("invalid unit " + sUnit);
}
}
switch (sUnit) {
case "MINUTE":
oEndDate = clone(oStartDate);
oEndDate.setMinutes(oStartDate.getMinutes() + iDuration);
break;
case "HOUR":
oEndDate = clone(oStartDate);
oEndDate.setHours(oStartDate.getHours() + iDuration);
break;
case "DAY":
if (iDuration > 0) {
oStartDate.setDate(oStartDate.getDate() + 1);
}
oEndDate = clone(oStartDate);
iDuration = iDuration == 0 ? 1 : iDuration;
oEndDate.setDate(oStartDate.getDate() + iDuration);
break;
case "WEEK":
if (iDuration > 0) {
oStartDate.setDate(oStartDate.getDate() + 7);
}
oEndDate = clone(oStartDate);
iDuration = iDuration == 0 ? 1 : iDuration;
oEndDate.setDate(oStartDate.getDate() + (iDuration * 7));
break;
case "MONTH":
if (iDuration > 0) {
oStartDate.setMonth(oStartDate.getMonth() + 1);
}
oEndDate = clone(oStartDate);
iDuration = iDuration == 0 ? 1 : iDuration;
oEndDate.setMonth(oStartDate.getMonth() + iDuration);
break;
case "QUARTER":
if (iDuration > 0) {
oStartDate.setMonth(oStartDate.getMonth() + 3);
}
oEndDate = clone(oStartDate);
iDuration = iDuration == 0 ? 1 : iDuration;
oEndDate.setMonth(oStartDate.getMonth() + (iDuration * 3));
break;
case "YEAR":
if (iDuration > 0) {
oStartDate.setFullYear(oStartDate.getFullYear() + 1);
}
oEndDate = clone(oStartDate);
iDuration = iDuration == 0 ? 1 : iDuration;
oEndDate.setFullYear(oStartDate.getFullYear() + iDuration);
break;
default:
throw new TypeError("invalid unit " + sUnit);
}
if (oEndDate.getTime() < oStartDate.getTime()) {
// swap start/end date
oEndDate = [oStartDate, oStartDate = oEndDate][0];
}
if (sUnit === "HOUR" || sUnit === "MINUTE") {
return [ oStartDate, oEndDate ];
}
// adjust endDate (it is 'inclusive')
oEndDate.setDate(oEndDate.getDate() - 1);
return [
UniversalDateUtils.resetStartTime(oStartDate), UniversalDateUtils.resetEndTime(oEndDate)
];
};
/**
* Returns the first day of the week of the given date.
*
* The interpretation of 'first day of the week' depends on the given locale.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the beginning of the day (0:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @param {string} [sLocale]
* An optional locale identifier, as BCP language tag; defaults to the current format localе of UI5; see
* {@link module:sap/base/i18n/Formatting.getLanguageTag Formatting.getLanguageTag}
* @returns {sap.ui.core.date.UniversalDate} First day of the week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getWeekStartDate = function (oUniversalDate, sLocale) {
var oLocale = sLocale ? new Locale(sLocale)
: new Locale(Formatting.getLanguageTag()),
oLocaleData = LocaleData.getInstance(oLocale),
iFirstDayOfWeek = oLocaleData.getFirstDayOfWeek();
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setDate(oUniversalDate.getDate() - oUniversalDate.getDay() + iFirstDayOfWeek);
return UniversalDateUtils.resetStartTime(oUniversalDate);
};
/**
* Returns the last day of the week for the given date.
*
* The interpretation of 'last day of the week' depends on the given locale.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the start of the day (00:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @param {string} [sLocale]
* An optional locale identifier, as BCP language tag; defaults to the current format localе of UI5; see
* {@link module:sap/base/i18n/Formatting.getLanguageTag Formatting.getLanguageTag}
* @returns {sap.ui.core.date.UniversalDate} Last day of the week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getWeekLastDate = function (oUniversalDate, sLocale) {
var oEndDate = UniversalDateUtils.getWeekStartDate(oUniversalDate, sLocale);
oEndDate.setDate(oEndDate.getDate() + 6);
return UniversalDateUtils.resetStartTime(oEndDate);
};
/**
* Returns the first day of the month of the given date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the beginning of the day (0:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} First day of the month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getMonthStartDate = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setDate(1);
return UniversalDateUtils.resetStartTime(oUniversalDate);
};
/**
* Returns the last day of the month for the given date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the start of the day (00:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} Last day of the month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getMonthEndDate = function (oUniversalDate) {
var oEndDate = UniversalDateUtils.getMonthStartDate(oUniversalDate);
oEndDate.setMonth(oEndDate.getMonth() + 1);
oEndDate.setDate(0);
return UniversalDateUtils.resetStartTime(oEndDate);
};
/**
* Returns the first day of the quarter of the year of the given date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the beginning of the day (0:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} First day of the quarter of the year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getQuarterStartDate = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setMonth(3 * Math.floor(oUniversalDate.getMonth() / 3));
oUniversalDate.setDate(1);
return UniversalDateUtils.resetStartTime(oUniversalDate);
};
/**
* Returns the last day of the quarter of the year for the given date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the start of the day (00:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} Last day of the quarter of the year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getQuarterEndDate = function (oUniversalDate) {
var oEndDate = UniversalDateUtils.getQuarterStartDate(oUniversalDate);
oEndDate.setMonth(oEndDate.getMonth() + 3);
oEndDate.setDate(0);
return UniversalDateUtils.resetStartTime(oEndDate);
};
/**
* Returns the year's start date based on a given universal date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the beginning of the day (0:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} The year's start date for the given universal date
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getYearStartDate = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setMonth(0);
oUniversalDate.setDate(1);
return UniversalDateUtils.resetStartTime(oUniversalDate);
};
/**
* Returns the year's end date based on a given universal date.
*
* If no date is given, today is used, represented in the session's default calendar.
* If a date is given, the returned date will use the same calendar.
* The time portion of the returned date will be set to the start of the day (00:00:00:000).
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Base date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} The year's end date for the given universal date
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.getYearEndDate = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setFullYear(oUniversalDate.getFullYear() + 1);
oUniversalDate.setMonth(0);
oUniversalDate.setDate(0);
return UniversalDateUtils.resetStartTime(oUniversalDate);
};
/**
* Returns a copy of the given date with the time portion set to 00:00:00.000.
*
* If no date is given, today will be used, represented in the session's default calendar.
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} A date with the time portion set to 00:00:00.000
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.resetStartTime = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setHours(0, 0, 0, 0);
return oUniversalDate;
};
/**
* Returns a copy of the given date with the time portion set to 23:59:59:999
*
* If no date is given, today will be used, represented in the session's default calendar.
*
* @param {sap.ui.core.date.UniversalDate} [oUniversalDate=now] Date, defaults to now
* @returns {sap.ui.core.date.UniversalDate} A date with the time portion set to 23:59:59.999
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.resetEndTime = function (oUniversalDate) {
oUniversalDate = oUniversalDate ? clone(oUniversalDate) : clone(UniversalDateUtils.createNewUniversalDate());
oUniversalDate.setHours(23, 59, 59, 999);
return oUniversalDate;
};
UniversalDateUtils.createNewUniversalDate = function() {
return new UniversalDate();
};
/**
* Returns a date representing the first date of the current week, offset by a number of days.
*
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @param {int} iDaysToAdd Day offset
* @returns {sap.ui.core.date.UniversalDate} Starting date of the week with optional day offset.
* @private
*/
UniversalDateUtils._getDateFromWeekStartByDayOffset = function (sCalendarWeekNumbering, iDaysToAdd) {
var sCalendarType = Formatting.getCalendarType(),
oLocale = Locale._getCoreLocale(Formatting.getLanguageTag()),
oUniversalDate = UniversalDateUtils.createNewUniversalDate(),
oWeekAndYear = oUniversalDate.getWeek(oLocale, sCalendarWeekNumbering),
oFirstDateOfWeek = UniversalDate.getFirstDateOfWeek(sCalendarType, oWeekAndYear.year, oWeekAndYear.week,
oLocale, sCalendarWeekNumbering);
if (iDaysToAdd === undefined) {
iDaysToAdd = 0;
}
return new UniversalDate(oFirstDateOfWeek.year, oFirstDateOfWeek.month, oFirstDateOfWeek.day + iDaysToAdd, 0, 0, 0);
};
/**
* Helpers to create well-known ranges.
*
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
UniversalDateUtils.ranges = {
/**
* @param {int} iDays Number of days before the current day
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iDays before the current day
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastDays: function (iDays) {
return UniversalDateUtils.getRange(-iDays, "DAY");
},
/**
* @param {int} iMinutes Number of minutes before the current time
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iMinutes before the current time
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastMinutes: function (iMinutes) {
return UniversalDateUtils.getRange(-iMinutes, "MINUTE");
},
/**
* @param {int} iHours Number of hours before the current time
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iHours before the current time
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastHours: function (iHours) {
return UniversalDateUtils.getRange(-iHours, "HOUR");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of yesterday's date
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
yesterday: function () {
return UniversalDateUtils.getRange(-1, "DAY");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of today's date
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
today: function () {
return UniversalDateUtils.getRange(0, "DAY");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of tomorrow's date
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
tomorrow: function () {
return UniversalDateUtils.getRange(1, "DAY");
},
/**
* @param {int} iMinutes Number of minutes after the current time
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iMinutes after the current time
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextMinutes: function (iMinutes) {
return UniversalDateUtils.getRange(iMinutes, "MINUTE");
},
/**
* @param {int} iHours Number of hours after the current time
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iHours after the current time
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextHours: function (iHours) {
return UniversalDateUtils.getRange(iHours, "HOUR");
},
/**
* @param {int} iDays Number of days after the current day
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iDays after the current day
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextDays: function (iDays) {
return UniversalDateUtils.getRange(iDays, "DAY");
},
/**
* @param {int} iWeeks Number of weeks before the current week
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]}
* Array with start and end date of iWeeks before the current week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastWeeks: function (iWeeks, sCalendarWeekNumbering) {
var oUniversalFirstDateOfWeek;
if (sCalendarWeekNumbering) {
oUniversalFirstDateOfWeek = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return UniversalDateUtils.getRange(-iWeeks, "WEEK", oUniversalFirstDateOfWeek, false);
}
return UniversalDateUtils.getRange(-iWeeks, "WEEK");
},
/**
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastWeek: function (sCalendarWeekNumbering) {
var oUniversalFirstDateOfWeek;
if (sCalendarWeekNumbering) {
oUniversalFirstDateOfWeek = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return UniversalDateUtils.getRange(-1, "WEEK", oUniversalFirstDateOfWeek, false);
}
return UniversalDateUtils.getRange(-1, "WEEK");
},
/**
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of the current week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
currentWeek: function (sCalendarWeekNumbering) {
var oUniversalFirstDateOfWeek;
if (sCalendarWeekNumbering) {
oUniversalFirstDateOfWeek = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return UniversalDateUtils.getRange(0, "WEEK", oUniversalFirstDateOfWeek, false);
}
return UniversalDateUtils.getRange(0, "WEEK");
},
/**
* @param {string} sCalendarWeekNumbering The kind of calendarWeekNumbering.
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of the first day of the current week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
firstDayOfWeek: function (sCalendarWeekNumbering) {
var oUniversalFirstDateOfWeek;
if (sCalendarWeekNumbering) {
oUniversalFirstDateOfWeek = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return [
UniversalDateUtils.resetStartTime(oUniversalFirstDateOfWeek),
UniversalDateUtils.resetEndTime(oUniversalFirstDateOfWeek)
];
}
var oStartDate = UniversalDateUtils.getWeekStartDate();
return [
oStartDate,
UniversalDateUtils.resetEndTime(oStartDate)
];
},
/**
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of the last day of the current week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastDayOfWeek: function (sCalendarWeekNumbering) {
var oLastDateOfWeekUniversalDate, iSixDays;
if (sCalendarWeekNumbering) {
iSixDays = 6;
oLastDateOfWeekUniversalDate = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering, iSixDays);
return [
oLastDateOfWeekUniversalDate,
UniversalDateUtils.resetEndTime(oLastDateOfWeekUniversalDate)
];
}
var oEndDate = UniversalDateUtils.getWeekLastDate();
return [
oEndDate,
UniversalDateUtils.resetEndTime(oEndDate)
];
},
/**
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of next week's
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextWeek: function (sCalendarWeekNumbering) {
var oFirstDateOfWeekUniversalDate;
if (sCalendarWeekNumbering) {
oFirstDateOfWeekUniversalDate = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return UniversalDateUtils.getRange(1, "WEEK", oFirstDateOfWeekUniversalDate, false);
}
return UniversalDateUtils.getRange(1, "WEEK");
},
/**
* @param {int} iWeeks Number of weeks after the current week
* @param {string} sCalendarWeekNumbering The type of calendar week numbering
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iWeeks after the current week
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextWeeks: function (iWeeks, sCalendarWeekNumbering) {
var oFirstDateOfWeekUniversalDate;
if (sCalendarWeekNumbering) {
oFirstDateOfWeekUniversalDate = UniversalDateUtils._getDateFromWeekStartByDayOffset(sCalendarWeekNumbering);
return UniversalDateUtils.getRange(iWeeks, "WEEK", oFirstDateOfWeekUniversalDate, false);
}
return UniversalDateUtils.getRange(iWeeks, "WEEK");
},
/**
* @param {int} iMonths Number of months before the current month
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iMonths before the current month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastMonths: function (iMonths) {
return UniversalDateUtils.getRange(-iMonths, "MONTH");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last month's
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastMonth: function () {
return UniversalDateUtils.getRange(-1, "MONTH");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of current month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
currentMonth: function () {
return UniversalDateUtils.getRange(0, "MONTH");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of first day of the current month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
firstDayOfMonth: function () {
var oStartDate = UniversalDateUtils.getMonthStartDate();
return [
oStartDate,
UniversalDateUtils.resetEndTime(oStartDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last day of the current month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastDayOfMonth: function () {
var oEndDate = UniversalDateUtils.getMonthEndDate();
return [
oEndDate,
UniversalDateUtils.resetEndTime(oEndDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of next month's
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextMonth: function () {
return UniversalDateUtils.getRange(1, "MONTH");
},
/**
* @param {int} iMonths Number of months after the current month
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iMonths after the current month
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextMonths: function (iMonths) {
return UniversalDateUtils.getRange(iMonths, "MONTH");
},
/**
* @param {int} iQuarters Number of quarters before the current quarter
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iQuarters before the current quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastQuarters: function (iQuarters) {
return UniversalDateUtils.getRange(-iQuarters, "QUARTER");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastQuarter: function () {
return UniversalDateUtils.getRange(-1, "QUARTER");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of first day of the current quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
firstDayOfQuarter: function () {
var oStartDate = UniversalDateUtils.getQuarterStartDate();
return [
oStartDate,
UniversalDateUtils.resetEndTime(oStartDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last day of the current quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastDayOfQuarter: function () {
var oEndDate = UniversalDateUtils.getQuarterEndDate();
return [
oEndDate,
UniversalDateUtils.resetEndTime(oEndDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of current quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
currentQuarter: function () {
return UniversalDateUtils.getRange(0, "QUARTER");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of next quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextQuarter: function () {
return UniversalDateUtils.getRange(1, "QUARTER");
},
/**
* @param {int} iQuarters Number of quarters after the current quarter
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iQuarters after the current quarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextQuarters: function (iQuarters) {
return UniversalDateUtils.getRange(iQuarters, "QUARTER");
},
/**
* @param {int} iQuarter Number of quarter of the current year
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iQuarter
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
quarter: function (iQuarter) {
if (iQuarter <= 2) {
return UniversalDateUtils.getRange(iQuarter - 1, "QUARTER", UniversalDateUtils.getYearStartDate());
} else {
var aRange = UniversalDateUtils.getRange(iQuarter - 2, "QUARTER", UniversalDateUtils.getYearStartDate());
var oStartDate = aRange[1];
oStartDate.setMilliseconds(1000);
return UniversalDateUtils.getRange(0, "QUARTER", oStartDate);
}
},
/**
* @param {int} iYears Number of years before the current year
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iYears before the current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastYears: function (iYears) {
return UniversalDateUtils.getRange(-iYears, "YEAR");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last year
* @private
* @ui5-restricted sap.ui.comp
*/
lastYear: function () {
return UniversalDateUtils.getRange(-1, "YEAR");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of first day of the current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
firstDayOfYear: function () {
var oStartDate = UniversalDateUtils.getYearStartDate();
return [
oStartDate,
UniversalDateUtils.resetEndTime(oStartDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of last day of the current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
lastDayOfYear: function () {
var oEndDate = UniversalDateUtils.getYearEndDate();
return [
oEndDate,
UniversalDateUtils.resetEndTime(oEndDate)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
currentYear: function () {
return UniversalDateUtils.getRange(0, "YEAR");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of next year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextYear: function () {
return UniversalDateUtils.getRange(1, "YEAR");
},
/**
* @param {int} iYears Number of years after the current year
* @returns {sap.ui.core.date.UniversalDate[]} Array with start and end date of iYears after the current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
nextYears: function (iYears) {
return UniversalDateUtils.getRange(iYears, "YEAR");
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with first day of the current year and today
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
yearToDate: function () {
var oToday = UniversalDateUtils.createNewUniversalDate();
return [
UniversalDateUtils.getYearStartDate(oToday),
UniversalDateUtils.resetEndTime(oToday)
];
},
/**
* @returns {sap.ui.core.date.UniversalDate[]} Array with today and end of the current year
* @private
* @ui5-restricted sap.ui.comp, sap.ui.mdc, sap.fe
*/
dateToYear: function () {
var oToday = UniversalDateUtils.createNewUniversalDate();
return [
UniversalDateUtils.resetStartTime(oToday),
UniversalDateUtils.resetEndTime(UniversalDateUtils.getYearEndDate(oToday))
];
}
};
return UniversalDateUtils;
});