@ui5/webcomponents-localization 0.0.0-cae5b17f8 → 0.0.0-cb061e041
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +1 -1
- package/.npsrc.json +3 -0
- package/CHANGELOG.md +377 -0
- package/README.md +36 -6
- package/{src/Assets-static.js → dist/Assets-static.d.ts} +0 -1
- package/dist/Assets-static.js +1 -0
- package/dist/Assets-static.js.map +1 -0
- package/dist/Assets.d.ts +1 -0
- package/dist/Assets.js +1 -0
- package/dist/Assets.js.map +1 -0
- package/dist/DateFormat.d.ts +6 -0
- package/dist/DateFormat.js +6 -2
- package/dist/DateFormat.js.map +1 -0
- package/dist/LocaleData.d.ts +6 -0
- package/dist/LocaleData.js +6 -2
- package/dist/LocaleData.js.map +1 -0
- package/dist/dates/CalendarDate.d.ts +43 -0
- package/dist/dates/CalendarDate.js +171 -201
- package/dist/dates/CalendarDate.js.map +1 -0
- package/dist/dates/ExtremeDates.d.ts +5 -0
- package/dist/dates/ExtremeDates.js +25 -35
- package/dist/dates/ExtremeDates.js.map +1 -0
- package/dist/dates/UI5Date.d.ts +6 -0
- package/dist/dates/UI5Date.js +7 -0
- package/dist/dates/UI5Date.js.map +1 -0
- package/dist/dates/UniversalDate.d.ts +47 -0
- package/dist/dates/UniversalDate.js +5 -0
- package/dist/dates/UniversalDate.js.map +1 -0
- package/dist/dates/calculateWeekNumber.d.ts +5 -0
- package/dist/dates/calculateWeekNumber.js +42 -48
- package/dist/dates/calculateWeekNumber.js.map +1 -0
- package/dist/dates/convertMonthNumbersToMonthNames.d.ts +16 -0
- package/dist/dates/convertMonthNumbersToMonthNames.js +30 -0
- package/dist/dates/convertMonthNumbersToMonthNames.js.map +1 -0
- package/dist/dates/getDaysInMonth.d.ts +3 -0
- package/dist/dates/getDaysInMonth.js +10 -0
- package/dist/dates/getDaysInMonth.js.map +1 -0
- package/dist/dates/getRoundedTimestamp.d.ts +7 -0
- package/dist/dates/getRoundedTimestamp.js +10 -9
- package/dist/dates/getRoundedTimestamp.js.map +1 -0
- package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
- package/dist/dates/getTodayUTCTimestamp.js +3 -3
- package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
- package/dist/dates/modifyDateBy.d.ts +13 -0
- package/dist/dates/modifyDateBy.js +27 -29
- package/dist/dates/modifyDateBy.js.map +1 -0
- package/dist/dates/transformDateToSecondaryType.d.ts +7 -0
- package/dist/dates/transformDateToSecondaryType.js +18 -0
- package/dist/dates/transformDateToSecondaryType.js.map +1 -0
- package/dist/features/calendar/Buddhist.js +1 -0
- package/dist/features/calendar/Buddhist.js.map +1 -0
- package/dist/features/calendar/Gregorian.js +1 -0
- package/dist/features/calendar/Gregorian.js.map +1 -0
- package/dist/features/calendar/Islamic.js +1 -0
- package/dist/features/calendar/Islamic.js.map +1 -0
- package/dist/features/calendar/Japanese.js +1 -0
- package/dist/features/calendar/Japanese.js.map +1 -0
- package/dist/features/calendar/Persian.js +1 -0
- package/dist/features/calendar/Persian.js.map +1 -0
- package/dist/generated/assets/cldr/ar.json +2816 -5906
- package/dist/generated/assets/cldr/ar_EG.json +2816 -5906
- package/dist/generated/assets/cldr/ar_SA.json +2815 -5906
- package/dist/generated/assets/cldr/bg.json +2733 -4979
- package/dist/generated/assets/cldr/ca.json +2680 -4996
- package/dist/generated/assets/cldr/cs.json +2716 -5498
- package/dist/generated/assets/cldr/cy.json +2797 -5884
- package/dist/generated/assets/cldr/da.json +2597 -4888
- package/dist/generated/assets/cldr/de.json +2614 -4916
- package/dist/generated/assets/cldr/de_AT.json +2614 -4917
- package/dist/generated/assets/cldr/de_CH.json +2614 -4915
- package/dist/generated/assets/cldr/el.json +2595 -4883
- package/dist/generated/assets/cldr/el_CY.json +2595 -4883
- package/dist/generated/assets/cldr/en.json +2583 -4970
- package/dist/generated/assets/cldr/en_AU.json +2592 -4962
- package/dist/generated/assets/cldr/en_GB.json +2584 -4971
- package/dist/generated/assets/cldr/en_HK.json +2593 -4977
- package/dist/generated/assets/cldr/en_IE.json +2584 -4971
- package/dist/generated/assets/cldr/en_IN.json +2588 -4972
- package/dist/generated/assets/cldr/en_NZ.json +2584 -4971
- package/dist/generated/assets/cldr/en_PG.json +2584 -4972
- package/dist/generated/assets/cldr/en_SG.json +2588 -4973
- package/dist/generated/assets/cldr/en_ZA.json +2584 -4972
- package/dist/generated/assets/cldr/es.json +2640 -4912
- package/dist/generated/assets/cldr/es_AR.json +2645 -4914
- package/dist/generated/assets/cldr/es_BO.json +2645 -4913
- package/dist/generated/assets/cldr/es_CL.json +2645 -4914
- package/dist/generated/assets/cldr/es_CO.json +2644 -4913
- package/dist/generated/assets/cldr/es_MX.json +2645 -4915
- package/dist/generated/assets/cldr/es_PE.json +2645 -4913
- package/dist/generated/assets/cldr/es_UY.json +2645 -4915
- package/dist/generated/assets/cldr/es_VE.json +2645 -4914
- package/dist/generated/assets/cldr/et.json +2599 -4967
- package/dist/generated/assets/cldr/fa.json +2618 -4883
- package/dist/generated/assets/cldr/fi.json +2726 -5008
- package/dist/generated/assets/cldr/fr.json +2590 -4979
- package/dist/generated/assets/cldr/fr_BE.json +2590 -4979
- package/dist/generated/assets/cldr/fr_CA.json +2605 -4973
- package/dist/generated/assets/cldr/fr_CH.json +2607 -4997
- package/dist/generated/assets/cldr/fr_LU.json +2590 -4979
- package/dist/generated/assets/cldr/he.json +2711 -5378
- package/dist/generated/assets/cldr/hi.json +2602 -4829
- package/dist/generated/assets/cldr/hr.json +2652 -4919
- package/dist/generated/assets/cldr/hu.json +2598 -4856
- package/dist/generated/assets/cldr/id.json +2544 -4658
- package/dist/generated/assets/cldr/it.json +2590 -4950
- package/dist/generated/assets/cldr/it_CH.json +2590 -4950
- package/dist/generated/assets/cldr/ja.json +2663 -4830
- package/dist/generated/assets/cldr/kk.json +2589 -4725
- package/dist/generated/assets/cldr/ko.json +2641 -4738
- package/dist/generated/assets/cldr/lt.json +2720 -5481
- package/dist/generated/assets/cldr/lv.json +2644 -5112
- package/dist/generated/assets/cldr/ms.json +2538 -4515
- package/dist/generated/assets/cldr/nb.json +2621 -4977
- package/dist/generated/assets/cldr/nl.json +2601 -4884
- package/dist/generated/assets/cldr/nl_BE.json +2601 -4884
- package/dist/generated/assets/cldr/pl.json +2723 -5176
- package/dist/generated/assets/cldr/pt.json +2607 -4805
- package/dist/generated/assets/cldr/pt_PT.json +2658 -4940
- package/dist/generated/assets/cldr/ro.json +2645 -5090
- package/dist/generated/assets/cldr/ru.json +2704 -5407
- package/dist/generated/assets/cldr/ru_UA.json +2704 -5407
- package/dist/generated/assets/cldr/sk.json +2726 -5370
- package/dist/generated/assets/cldr/sl.json +2688 -5340
- package/dist/generated/assets/cldr/sr.json +2663 -5126
- package/dist/generated/assets/cldr/sr_Latn.json +2666 -5127
- package/dist/generated/assets/cldr/sv.json +2631 -5011
- package/dist/generated/assets/cldr/th.json +2635 -4797
- package/dist/generated/assets/cldr/tr.json +2612 -4979
- package/dist/generated/assets/cldr/uk.json +2684 -5353
- package/dist/generated/assets/cldr/vi.json +2555 -4673
- package/dist/generated/assets/cldr/zh_CN.json +2555 -4632
- package/dist/generated/assets/cldr/zh_HK.json +2563 -4640
- package/dist/generated/assets/cldr/zh_SG.json +2562 -4640
- package/dist/generated/assets/cldr/zh_TW.json +2587 -4728
- package/dist/generated/json-imports/LocaleData-static.js +2 -1
- package/dist/generated/json-imports/LocaleData.js +2 -1
- package/dist/getCachedLocaleDataInstance.d.ts +4 -0
- package/dist/getCachedLocaleDataInstance.js +6 -9
- package/dist/getCachedLocaleDataInstance.js.map +1 -0
- package/dist/locale/getLocaleData.d.ts +11 -0
- package/dist/locale/getLocaleData.js +13 -17
- package/dist/locale/getLocaleData.js.map +1 -0
- package/dist/sap/base/Log.js +28 -37
- package/dist/sap/base/assert.js +5 -10
- package/dist/sap/base/util/LoaderExtensions.d.ts +4 -0
- package/dist/sap/base/util/LoaderExtensions.js +9 -12
- package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
- package/dist/sap/base/util/deepEqual.js +1 -5
- package/dist/sap/ui/base/Object.js +26 -2
- package/dist/sap/ui/core/Configuration.d.ts +17 -0
- package/dist/sap/ui/core/Configuration.js +21 -0
- package/dist/sap/ui/core/Configuration.js.map +1 -0
- package/dist/sap/ui/core/Core.d.ts +26 -0
- package/dist/sap/ui/core/Core.js +7 -32
- package/dist/sap/ui/core/Core.js.map +1 -0
- package/dist/sap/ui/core/FormatSettings.d.ts +10 -0
- package/dist/sap/ui/core/FormatSettings.js +14 -0
- package/dist/sap/ui/core/FormatSettings.js.map +1 -0
- package/dist/sap/ui/core/Locale.js +15 -0
- package/dist/sap/ui/core/LocaleData.js +182 -1522
- package/dist/sap/ui/core/date/Buddhist.js +0 -6
- package/dist/sap/ui/core/date/CalendarUtils.js +36 -0
- package/dist/sap/ui/core/date/CalendarWeekNumbering.js +7 -0
- package/dist/sap/ui/core/date/Islamic.js +3 -3
- package/dist/sap/ui/core/date/Japanese.js +4 -4
- package/dist/sap/ui/core/date/UI5Date.js +305 -0
- package/dist/sap/ui/core/date/UniversalDate.js +84 -26
- package/dist/sap/ui/core/format/DateFormat.js +787 -474
- package/dist/sap/ui/core/format/TimezoneUtil.js +89 -0
- package/{package-scripts.js → package-scripts.cjs} +10 -13
- package/package.json +8 -14
- package/tsconfig.json +15 -0
- package/used-modules.txt +5 -1
- package/hash.txt +0 -1
- package/src/Assets.js +0 -2
- package/src/DateFormat.js +0 -3
- package/src/LocaleData.js +0 -3
- package/src/dates/CalendarDate.js +0 -223
- package/src/dates/ExtremeDates.js +0 -39
- package/src/dates/calculateWeekNumber.js +0 -51
- package/src/dates/getRoundedTimestamp.js +0 -14
- package/src/dates/getTodayUTCTimestamp.js +0 -9
- package/src/dates/modifyDateBy.js +0 -42
- package/src/getCachedLocaleDataInstance.js +0 -13
- package/src/locale/getLocaleData.js +0 -27
- package/src/sap/base/util/LoaderExtensions.js +0 -17
- package/src/sap/ui/core/Core.js +0 -38
- /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
- /package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
- /package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
- /package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
- /package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
- /package/{src/features/calendar/Persian.js → dist/features/calendar/Persian.d.ts} +0 -0
@@ -117,11 +117,5 @@ Buddhist.prototype.setUTCFullYear = function (iYear, iMonth, iDay) {
|
|
117
117
|
}
|
118
118
|
return this._setUTCBuddhist(oBuddhist);
|
119
119
|
};
|
120
|
-
Buddhist.prototype.getWeek = function () {
|
121
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
|
122
|
-
};
|
123
|
-
Buddhist.prototype.getUTCWeek = function () {
|
124
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
|
125
|
-
};
|
126
120
|
_Calendars.set(CalendarType.Buddhist, Buddhist);
|
127
121
|
export default Buddhist;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import CalendarWeekNumbering from './CalendarWeekNumbering.js';
|
2
|
+
import Configuration from '../Configuration.js';
|
3
|
+
import LocaleData from '../LocaleData.js';
|
4
|
+
var mWeekNumberingConfiguration = {
|
5
|
+
ISO_8601: {
|
6
|
+
firstDayOfWeek: 1,
|
7
|
+
minimalDaysInFirstWeek: 4
|
8
|
+
},
|
9
|
+
MiddleEastern: {
|
10
|
+
firstDayOfWeek: 6,
|
11
|
+
minimalDaysInFirstWeek: 1
|
12
|
+
},
|
13
|
+
WesternTraditional: {
|
14
|
+
firstDayOfWeek: 0,
|
15
|
+
minimalDaysInFirstWeek: 1
|
16
|
+
}
|
17
|
+
};
|
18
|
+
var CalendarUtils = {
|
19
|
+
getWeekConfigurationValues: function (sCalendarWeekNumbering, oLocale) {
|
20
|
+
var oLocaleData;
|
21
|
+
if (mWeekNumberingConfiguration.hasOwnProperty(sCalendarWeekNumbering)) {
|
22
|
+
return mWeekNumberingConfiguration[sCalendarWeekNumbering];
|
23
|
+
}
|
24
|
+
sCalendarWeekNumbering = sCalendarWeekNumbering || CalendarWeekNumbering.Default;
|
25
|
+
if (sCalendarWeekNumbering === CalendarWeekNumbering.Default) {
|
26
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
27
|
+
oLocaleData = LocaleData.getInstance(oLocale);
|
28
|
+
return {
|
29
|
+
firstDayOfWeek: oLocaleData.getFirstDayOfWeek(),
|
30
|
+
minimalDaysInFirstWeek: oLocaleData.getMinimalDaysInFirstWeek()
|
31
|
+
};
|
32
|
+
}
|
33
|
+
return undefined;
|
34
|
+
}
|
35
|
+
};
|
36
|
+
export default CalendarUtils;
|
@@ -1,8 +1,8 @@
|
|
1
|
-
import Core from '../Core.js';
|
2
1
|
import UniversalDate from './UniversalDate.js';
|
3
2
|
import CalendarType from '../CalendarType.js';
|
4
3
|
import Log from '../../../base/Log.js';
|
5
4
|
import _Calendars from './_Calendars.js';
|
5
|
+
import Configuration from '../Configuration.js';
|
6
6
|
var Islamic = UniversalDate.extend('sap.ui.core.date.Islamic', {
|
7
7
|
constructor: function () {
|
8
8
|
var aArgs = arguments;
|
@@ -102,9 +102,9 @@ function toGregorianArguments(aArgs) {
|
|
102
102
|
function initCustomizationMap() {
|
103
103
|
var sDateFormat, oCustomizationJSON;
|
104
104
|
oCustomizationMap = {};
|
105
|
-
sDateFormat =
|
105
|
+
sDateFormat = Configuration.getFormatSettings().getLegacyDateFormat();
|
106
106
|
sDateFormat = _isSupportedIslamicCalendarType(sDateFormat) ? sDateFormat : 'A';
|
107
|
-
oCustomizationJSON =
|
107
|
+
oCustomizationJSON = Configuration.getFormatSettings().getLegacyDateCalendarCustomizing();
|
108
108
|
oCustomizationJSON = oCustomizationJSON || [];
|
109
109
|
if (!oCustomizationJSON.length) {
|
110
110
|
Log.warning('No calendar customizations.');
|
@@ -152,11 +152,11 @@ Japanese.prototype.setUTCEra = function (iEra, iYear, iMonth, iDay) {
|
|
152
152
|
}
|
153
153
|
return this._setUTCJapanese(oJapanese);
|
154
154
|
};
|
155
|
-
Japanese.prototype.getWeek = function () {
|
156
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate());
|
155
|
+
Japanese.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
|
156
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
|
157
157
|
};
|
158
|
-
Japanese.prototype.getUTCWeek = function () {
|
159
|
-
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
|
158
|
+
Japanese.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
|
159
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.oDate.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
|
160
160
|
};
|
161
161
|
_Calendars.set(CalendarType.Japanese, Japanese);
|
162
162
|
export default Japanese;
|
@@ -0,0 +1,305 @@
|
|
1
|
+
import Configuration from '../Configuration.js';
|
2
|
+
import TimezoneUtil from '../format/TimezoneUtil.js';
|
3
|
+
var aAllParts = [
|
4
|
+
'year',
|
5
|
+
'month',
|
6
|
+
'day',
|
7
|
+
'hour',
|
8
|
+
'minute',
|
9
|
+
'second',
|
10
|
+
'fractionalSecond'
|
11
|
+
], rIsUTCString = /Z|GMT|:.*[\+|\-]|^([\+|\-]\d{2})?\d{4}(-\d{2}){0,2}$/, aWeekday = [
|
12
|
+
'Sun',
|
13
|
+
'Mon',
|
14
|
+
'Tue',
|
15
|
+
'Wed',
|
16
|
+
'Thu',
|
17
|
+
'Fri',
|
18
|
+
'Sat'
|
19
|
+
], aMonths = [
|
20
|
+
'Jan',
|
21
|
+
'Feb',
|
22
|
+
'Mar',
|
23
|
+
'Apr',
|
24
|
+
'May',
|
25
|
+
'Jun',
|
26
|
+
'Jul',
|
27
|
+
'Aug',
|
28
|
+
'Sep',
|
29
|
+
'Oct',
|
30
|
+
'Nov',
|
31
|
+
'Dec'
|
32
|
+
], mWeekdayToDay = {
|
33
|
+
Sun: 0,
|
34
|
+
Mon: 1,
|
35
|
+
Tue: 2,
|
36
|
+
Wed: 3,
|
37
|
+
Thu: 4,
|
38
|
+
Fri: 5,
|
39
|
+
Sat: 6
|
40
|
+
};
|
41
|
+
function addLeadingZeros(iValue, iLength) {
|
42
|
+
return (iValue < 0 ? '-' : '') + Math.abs(iValue).toString().padStart(iLength, '0');
|
43
|
+
}
|
44
|
+
function UI5Date(vDateParts, sTimezoneID) {
|
45
|
+
var oDateInstance = UI5Date._createDateInstance(vDateParts);
|
46
|
+
Object.defineProperties(this, {
|
47
|
+
sTimezoneID: { value: sTimezoneID },
|
48
|
+
oDate: {
|
49
|
+
value: oDateInstance,
|
50
|
+
writable: true
|
51
|
+
},
|
52
|
+
oDateParts: {
|
53
|
+
value: undefined,
|
54
|
+
writable: true
|
55
|
+
}
|
56
|
+
});
|
57
|
+
if (isNaN(oDateInstance)) {
|
58
|
+
return;
|
59
|
+
}
|
60
|
+
if (vDateParts.length > 1 || vDateParts.length === 1 && typeof vDateParts[0] === 'string' && !rIsUTCString.test(vDateParts[0])) {
|
61
|
+
this._setParts(aAllParts, [
|
62
|
+
oDateInstance.getFullYear(),
|
63
|
+
oDateInstance.getMonth(),
|
64
|
+
oDateInstance.getDate(),
|
65
|
+
oDateInstance.getHours(),
|
66
|
+
oDateInstance.getMinutes(),
|
67
|
+
oDateInstance.getSeconds(),
|
68
|
+
oDateInstance.getMilliseconds()
|
69
|
+
]);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
UI5Date.prototype = Object.create(Date.prototype, { constructor: { value: Date } });
|
73
|
+
UI5Date.prototype[Symbol.toStringTag] = 'Date';
|
74
|
+
UI5Date.prototype._getPart = function (sPart) {
|
75
|
+
var iResult;
|
76
|
+
if (isNaN(this.oDate)) {
|
77
|
+
return NaN;
|
78
|
+
}
|
79
|
+
this.oDateParts = this.oDateParts || TimezoneUtil._getParts(this.oDate, this.sTimezoneID);
|
80
|
+
if (sPart === 'weekday') {
|
81
|
+
return mWeekdayToDay[this.oDateParts.weekday];
|
82
|
+
}
|
83
|
+
iResult = parseInt(this.oDateParts[sPart]);
|
84
|
+
if (sPart === 'month') {
|
85
|
+
iResult -= 1;
|
86
|
+
} else if (sPart === 'year') {
|
87
|
+
if (this.oDateParts.era === 'B') {
|
88
|
+
iResult = 1 - iResult;
|
89
|
+
}
|
90
|
+
}
|
91
|
+
return iResult;
|
92
|
+
};
|
93
|
+
UI5Date.prototype._setParts = function (aParts, aValues) {
|
94
|
+
var i, oCurrentDateParts, oNewDateAsUTCTimestamp, iNewTimestamp, sPart, vValue, oDateParts = {}, iMaxLength = Math.min(aParts.length, aValues.length);
|
95
|
+
if (iMaxLength === 0) {
|
96
|
+
return this.setTime(NaN);
|
97
|
+
}
|
98
|
+
for (i = 0; i < iMaxLength; i += 1) {
|
99
|
+
vValue = parseInt(+aValues[i]);
|
100
|
+
sPart = aParts[i];
|
101
|
+
if (isNaN(vValue)) {
|
102
|
+
return this.setTime(NaN);
|
103
|
+
}
|
104
|
+
if (sPart === 'month') {
|
105
|
+
vValue += 1;
|
106
|
+
} else if (sPart === 'year') {
|
107
|
+
if (vValue <= 0) {
|
108
|
+
vValue = 1 - vValue;
|
109
|
+
oDateParts.era = 'B';
|
110
|
+
} else {
|
111
|
+
oDateParts.era = 'A';
|
112
|
+
}
|
113
|
+
}
|
114
|
+
oDateParts[sPart] = vValue.toString();
|
115
|
+
}
|
116
|
+
if (this.oDateParts) {
|
117
|
+
oCurrentDateParts = this.oDateParts;
|
118
|
+
} else if (isNaN(this.oDate)) {
|
119
|
+
oCurrentDateParts = {
|
120
|
+
day: '1',
|
121
|
+
fractionalSecond: '0',
|
122
|
+
hour: '0',
|
123
|
+
minute: '0',
|
124
|
+
month: '1',
|
125
|
+
second: '0'
|
126
|
+
};
|
127
|
+
} else {
|
128
|
+
oCurrentDateParts = TimezoneUtil._getParts(this.oDate, this.sTimezoneID);
|
129
|
+
}
|
130
|
+
oDateParts = Object.assign({}, oCurrentDateParts, oDateParts);
|
131
|
+
oNewDateAsUTCTimestamp = TimezoneUtil._getDateFromParts(oDateParts);
|
132
|
+
if (isNaN(oNewDateAsUTCTimestamp)) {
|
133
|
+
return this.setTime(NaN);
|
134
|
+
}
|
135
|
+
iNewTimestamp = oNewDateAsUTCTimestamp.getTime() + TimezoneUtil.calculateOffset(oNewDateAsUTCTimestamp, this.sTimezoneID) * 1000;
|
136
|
+
return this.setTime(iNewTimestamp);
|
137
|
+
};
|
138
|
+
UI5Date.prototype.clone = function () {
|
139
|
+
return UI5Date.getInstance(this);
|
140
|
+
};
|
141
|
+
UI5Date.prototype.getDate = function () {
|
142
|
+
return this._getPart('day');
|
143
|
+
};
|
144
|
+
UI5Date.prototype.getDay = function () {
|
145
|
+
return this._getPart('weekday');
|
146
|
+
};
|
147
|
+
UI5Date.prototype.getFullYear = function () {
|
148
|
+
return this._getPart('year');
|
149
|
+
};
|
150
|
+
UI5Date.prototype.getHours = function () {
|
151
|
+
return this._getPart('hour');
|
152
|
+
};
|
153
|
+
UI5Date.prototype.getMilliseconds = function () {
|
154
|
+
return this._getPart('fractionalSecond');
|
155
|
+
};
|
156
|
+
UI5Date.prototype.getMinutes = function () {
|
157
|
+
return this._getPart('minute');
|
158
|
+
};
|
159
|
+
UI5Date.prototype.getMonth = function () {
|
160
|
+
return this._getPart('month');
|
161
|
+
};
|
162
|
+
UI5Date.prototype.getSeconds = function () {
|
163
|
+
return this._getPart('second');
|
164
|
+
};
|
165
|
+
UI5Date.prototype.getTimezoneOffset = function () {
|
166
|
+
return TimezoneUtil.calculateOffset(this.oDate, this.sTimezoneID) / 60;
|
167
|
+
};
|
168
|
+
UI5Date.prototype.getYear = function () {
|
169
|
+
return this._getPart('year') - 1900;
|
170
|
+
};
|
171
|
+
UI5Date.prototype.setDate = function (iDay) {
|
172
|
+
return this._setParts(['day'], arguments);
|
173
|
+
};
|
174
|
+
UI5Date.prototype.setFullYear = function (iYear, iMonth, iDay) {
|
175
|
+
return this._setParts([
|
176
|
+
'year',
|
177
|
+
'month',
|
178
|
+
'day'
|
179
|
+
], arguments);
|
180
|
+
};
|
181
|
+
UI5Date.prototype.setHours = function (iHours, iMinutes, iSeconds, iMilliseconds) {
|
182
|
+
return this._setParts([
|
183
|
+
'hour',
|
184
|
+
'minute',
|
185
|
+
'second',
|
186
|
+
'fractionalSecond'
|
187
|
+
], arguments);
|
188
|
+
};
|
189
|
+
UI5Date.prototype.setMilliseconds = function (iMilliseconds) {
|
190
|
+
return this._setParts(['fractionalSecond'], arguments);
|
191
|
+
};
|
192
|
+
UI5Date.prototype.setMinutes = function (iMinutes, iSeconds, iMilliseconds) {
|
193
|
+
return this._setParts([
|
194
|
+
'minute',
|
195
|
+
'second',
|
196
|
+
'fractionalSecond'
|
197
|
+
], arguments);
|
198
|
+
};
|
199
|
+
UI5Date.prototype.setMonth = function (iMonth, iDay) {
|
200
|
+
return this._setParts([
|
201
|
+
'month',
|
202
|
+
'day'
|
203
|
+
], arguments);
|
204
|
+
};
|
205
|
+
UI5Date.prototype.setSeconds = function (iSeconds, iMilliseconds) {
|
206
|
+
return this._setParts([
|
207
|
+
'second',
|
208
|
+
'fractionalSecond'
|
209
|
+
], arguments);
|
210
|
+
};
|
211
|
+
UI5Date.prototype.setTime = function (iTime) {
|
212
|
+
this.oDateParts = undefined;
|
213
|
+
return this.oDate.setTime(iTime);
|
214
|
+
};
|
215
|
+
UI5Date.prototype.setYear = function (iYear) {
|
216
|
+
return this._setParts(['year'], [parseInt(iYear) + 1900]);
|
217
|
+
};
|
218
|
+
UI5Date.prototype.toDateString = function () {
|
219
|
+
if (isNaN(this.oDate)) {
|
220
|
+
return this.oDate.toDateString();
|
221
|
+
}
|
222
|
+
return aWeekday[this.getDay()] + ' ' + aMonths[this.getMonth()] + ' ' + addLeadingZeros(this.getDate(), 2) + ' ' + addLeadingZeros(this.getFullYear(), 4);
|
223
|
+
};
|
224
|
+
UI5Date.prototype.toString = function () {
|
225
|
+
if (isNaN(this.oDate)) {
|
226
|
+
return this.oDate.toString();
|
227
|
+
}
|
228
|
+
return this.toDateString() + ' ' + this.toTimeString();
|
229
|
+
};
|
230
|
+
UI5Date.prototype.toTimeString = function () {
|
231
|
+
var iHours, iMinutes, sSign, iTimeZoneOffset;
|
232
|
+
if (isNaN(this.oDate)) {
|
233
|
+
return this.oDate.toTimeString();
|
234
|
+
}
|
235
|
+
iTimeZoneOffset = this.getTimezoneOffset();
|
236
|
+
sSign = iTimeZoneOffset > 0 ? '-' : '+';
|
237
|
+
iHours = Math.floor(Math.abs(iTimeZoneOffset) / 60);
|
238
|
+
iMinutes = Math.abs(iTimeZoneOffset) % 60;
|
239
|
+
return addLeadingZeros(this.getHours(), 2) + ':' + addLeadingZeros(this.getMinutes(), 2) + ':' + addLeadingZeros(this.getSeconds(), 2) + ' GMT' + sSign + addLeadingZeros(iHours, 2) + addLeadingZeros(iMinutes, 2);
|
240
|
+
};
|
241
|
+
[
|
242
|
+
'getTime',
|
243
|
+
'getUTCDate',
|
244
|
+
'getUTCDay',
|
245
|
+
'getUTCFullYear',
|
246
|
+
'getUTCHours',
|
247
|
+
'getUTCMilliseconds',
|
248
|
+
'getUTCMinutes',
|
249
|
+
'getUTCMonth',
|
250
|
+
'getUTCSeconds',
|
251
|
+
'toGMTString',
|
252
|
+
'toISOString',
|
253
|
+
'toJSON',
|
254
|
+
'toUTCString',
|
255
|
+
'valueOf'
|
256
|
+
].forEach(function (sMethod) {
|
257
|
+
UI5Date.prototype[sMethod] = function () {
|
258
|
+
return this.oDate[sMethod].apply(this.oDate, arguments);
|
259
|
+
};
|
260
|
+
});
|
261
|
+
[
|
262
|
+
'toLocaleDateString',
|
263
|
+
'toLocaleString',
|
264
|
+
'toLocaleTimeString'
|
265
|
+
].forEach(function (sMethod) {
|
266
|
+
UI5Date.prototype[sMethod] = function (sLocale, oOptions) {
|
267
|
+
return this.oDate[sMethod](sLocale || Configuration.getLanguageTag(), Object.assign({ timeZone: this.sTimezoneID }, oOptions));
|
268
|
+
};
|
269
|
+
});
|
270
|
+
[
|
271
|
+
'setUTCDate',
|
272
|
+
'setUTCFullYear',
|
273
|
+
'setUTCHours',
|
274
|
+
'setUTCMilliseconds',
|
275
|
+
'setUTCMinutes',
|
276
|
+
'setUTCMonth',
|
277
|
+
'setUTCSeconds'
|
278
|
+
].forEach(function (sMethod) {
|
279
|
+
UI5Date.prototype[sMethod] = function () {
|
280
|
+
this.oDateParts = undefined;
|
281
|
+
return this.oDate[sMethod].apply(this.oDate, arguments);
|
282
|
+
};
|
283
|
+
});
|
284
|
+
UI5Date._createDateInstance = function (vParts) {
|
285
|
+
if (vParts[0] instanceof Date) {
|
286
|
+
vParts[0] = vParts[0].valueOf();
|
287
|
+
}
|
288
|
+
return new (Function.prototype.bind.apply(Date, [].concat.apply([null], vParts)))();
|
289
|
+
};
|
290
|
+
UI5Date.getInstance = function () {
|
291
|
+
var sTimezone = Configuration.getTimezone();
|
292
|
+
if (sTimezone !== TimezoneUtil.getLocalTimezone()) {
|
293
|
+
return new UI5Date(arguments, sTimezone);
|
294
|
+
}
|
295
|
+
return UI5Date._createDateInstance(arguments);
|
296
|
+
};
|
297
|
+
UI5Date.checkDate = function (oDate) {
|
298
|
+
if (isNaN(oDate.getTime())) {
|
299
|
+
throw new Error('The given Date is not valid');
|
300
|
+
}
|
301
|
+
if (!(oDate instanceof UI5Date) && Configuration.getTimezone() !== TimezoneUtil.getLocalTimezone()) {
|
302
|
+
throw new Error('Configured time zone requires the parameter \'oDate\' to be an instance of' + ' sap.ui.core.date.UI5Date');
|
303
|
+
}
|
304
|
+
};
|
305
|
+
export default UI5Date;
|
@@ -1,7 +1,10 @@
|
|
1
|
-
import Core from '../Core.js';
|
2
1
|
import BaseObject from '../../base/Object.js';
|
2
|
+
import Configuration from '../Configuration.js';
|
3
3
|
import LocaleData from '../LocaleData.js';
|
4
4
|
import _Calendars from './_Calendars.js';
|
5
|
+
import CalendarUtils from './CalendarUtils.js';
|
6
|
+
import CalendarWeekNumbering from './CalendarWeekNumbering.js';
|
7
|
+
import UI5Date from './UI5Date.js';
|
5
8
|
var UniversalDate = BaseObject.extend('sap.ui.core.date.UniversalDate', {
|
6
9
|
constructor: function () {
|
7
10
|
var clDate = UniversalDate.getClass();
|
@@ -16,6 +19,9 @@ UniversalDate.now = function () {
|
|
16
19
|
return Date.now();
|
17
20
|
};
|
18
21
|
UniversalDate.prototype.createDate = function (clDate, aArgs) {
|
22
|
+
if (clDate === Date) {
|
23
|
+
return UI5Date.getInstance.apply(null, aArgs);
|
24
|
+
}
|
19
25
|
switch (aArgs.length) {
|
20
26
|
case 0:
|
21
27
|
return new clDate();
|
@@ -39,21 +45,22 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
|
|
39
45
|
var clDate, oInstance;
|
40
46
|
if (oDate instanceof UniversalDate) {
|
41
47
|
oDate = oDate.getJSDate();
|
42
|
-
}
|
43
|
-
|
48
|
+
}
|
49
|
+
if (oDate && isNaN(oDate.getTime())) {
|
50
|
+
throw new Error('The given date object is invalid');
|
44
51
|
}
|
45
52
|
if (!sCalendarType) {
|
46
|
-
sCalendarType =
|
53
|
+
sCalendarType = Configuration.getCalendarType();
|
47
54
|
}
|
48
55
|
clDate = UniversalDate.getClass(sCalendarType);
|
49
56
|
oInstance = Object.create(clDate.prototype);
|
50
|
-
oInstance.oDate = oDate;
|
57
|
+
oInstance.oDate = oDate ? UI5Date.getInstance(oDate) : UI5Date.getInstance();
|
51
58
|
oInstance.sCalendarType = sCalendarType;
|
52
59
|
return oInstance;
|
53
60
|
};
|
54
61
|
UniversalDate.getClass = function (sCalendarType) {
|
55
62
|
if (!sCalendarType) {
|
56
|
-
sCalendarType =
|
63
|
+
sCalendarType = Configuration.getCalendarType();
|
57
64
|
}
|
58
65
|
return _Calendars.get(sCalendarType);
|
59
66
|
};
|
@@ -116,18 +123,22 @@ UniversalDate.prototype.getUTCEra = function () {
|
|
116
123
|
};
|
117
124
|
UniversalDate.prototype.setUTCEra = function (iEra) {
|
118
125
|
};
|
119
|
-
UniversalDate.prototype.getWeek = function () {
|
120
|
-
|
126
|
+
UniversalDate.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
|
127
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
128
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
|
121
129
|
};
|
122
|
-
UniversalDate.prototype.setWeek = function (oWeek) {
|
123
|
-
|
130
|
+
UniversalDate.prototype.setWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
|
131
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
132
|
+
var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
|
124
133
|
this.setFullYear(oDate.year, oDate.month, oDate.day);
|
125
134
|
};
|
126
|
-
UniversalDate.prototype.getUTCWeek = function () {
|
127
|
-
|
135
|
+
UniversalDate.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
|
136
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
137
|
+
return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
|
128
138
|
};
|
129
|
-
UniversalDate.prototype.setUTCWeek = function (oWeek) {
|
130
|
-
|
139
|
+
UniversalDate.prototype.setUTCWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
|
140
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
141
|
+
var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
|
131
142
|
this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
|
132
143
|
};
|
133
144
|
UniversalDate.prototype.getQuarter = function () {
|
@@ -161,15 +172,21 @@ UniversalDate.prototype.getTimezoneLong = function () {
|
|
161
172
|
}
|
162
173
|
};
|
163
174
|
var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
|
164
|
-
UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
165
|
-
|
166
|
-
|
175
|
+
UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay, oLocale, vCalendarWeekNumbering) {
|
176
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
177
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
178
|
+
var clDate = this.getClass(sCalendarType);
|
179
|
+
var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
|
180
|
+
var oDate = new clDate(clDate.UTC(iYear, iMonth, iDay));
|
181
|
+
var iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
|
182
|
+
var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
|
183
|
+
if (bSplitWeek) {
|
167
184
|
iWeek = calculateWeeks(oFirstDay, oDate);
|
168
185
|
} else {
|
169
186
|
iLastYear = iYear - 1;
|
170
187
|
iNextYear = iYear + 1;
|
171
|
-
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
|
172
|
-
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
|
188
|
+
oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, vCalendarWeekNumbering);
|
189
|
+
oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, vCalendarWeekNumbering);
|
173
190
|
if (oDate >= oNextFirstDay) {
|
174
191
|
iYear = iNextYear;
|
175
192
|
iWeek = 0;
|
@@ -185,9 +202,14 @@ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
|
185
202
|
week: iWeek
|
186
203
|
};
|
187
204
|
};
|
188
|
-
UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
189
|
-
|
190
|
-
|
205
|
+
UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek, oLocale, vCalendarWeekNumbering) {
|
206
|
+
checkWeekConfig(vCalendarWeekNumbering);
|
207
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
208
|
+
var clDate = this.getClass(sCalendarType);
|
209
|
+
var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
|
210
|
+
var oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
|
211
|
+
var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
|
212
|
+
if (bSplitWeek && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
|
191
213
|
return {
|
192
214
|
year: iYear,
|
193
215
|
month: 0,
|
@@ -200,8 +222,44 @@ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
|
|
200
222
|
day: oDate.getUTCDate()
|
201
223
|
};
|
202
224
|
};
|
203
|
-
function
|
204
|
-
|
225
|
+
function isSplitWeek(vCalendarWeekNumbering, oLocale) {
|
226
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
227
|
+
var oLocaleData = LocaleData.getInstance(oLocale);
|
228
|
+
return (!isCalendarWeekConfigurationDefined(vCalendarWeekNumbering) || vCalendarWeekNumbering === CalendarWeekNumbering.Default) && oLocaleData.firstDayStartsFirstWeek();
|
229
|
+
}
|
230
|
+
function checkWeekConfig(vCalendarWeekNumbering) {
|
231
|
+
if (typeof vCalendarWeekNumbering === 'object') {
|
232
|
+
if (!isCalendarWeekConfigurationDefined(vCalendarWeekNumbering)) {
|
233
|
+
throw new TypeError('Week config requires firstDayOfWeek and minimalDaysInFirstWeek to be set');
|
234
|
+
}
|
235
|
+
} else if (vCalendarWeekNumbering && !Object.values(CalendarWeekNumbering).includes(vCalendarWeekNumbering)) {
|
236
|
+
throw new TypeError('Illegal format option calendarWeekNumbering: \'' + vCalendarWeekNumbering + '\'');
|
237
|
+
}
|
238
|
+
}
|
239
|
+
function isCalendarWeekConfigurationDefined(vCalendarWeekNumbering) {
|
240
|
+
if (typeof vCalendarWeekNumbering === 'object') {
|
241
|
+
return typeof vCalendarWeekNumbering.firstDayOfWeek === 'number' && typeof vCalendarWeekNumbering.minimalDaysInFirstWeek === 'number';
|
242
|
+
} else if (vCalendarWeekNumbering) {
|
243
|
+
return true;
|
244
|
+
}
|
245
|
+
return false;
|
246
|
+
}
|
247
|
+
function resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale) {
|
248
|
+
if (typeof vCalendarWeekNumbering === 'object' && typeof vCalendarWeekNumbering.firstDayOfWeek === 'number' && typeof vCalendarWeekNumbering.minimalDaysInFirstWeek === 'number') {
|
249
|
+
return vCalendarWeekNumbering;
|
250
|
+
}
|
251
|
+
return CalendarUtils.getWeekConfigurationValues(vCalendarWeekNumbering, oLocale);
|
252
|
+
}
|
253
|
+
function getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering) {
|
254
|
+
oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
|
255
|
+
var oWeekConfig = resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale);
|
256
|
+
var iMinDays = oWeekConfig.minimalDaysInFirstWeek;
|
257
|
+
var iFirstDayOfWeek = oWeekConfig.firstDayOfWeek;
|
258
|
+
var oFirstDay = new clDate(clDate.UTC(iYear, 0, 1));
|
259
|
+
var iDayCount = 7;
|
260
|
+
if (isNaN(oFirstDay.getTime())) {
|
261
|
+
throw new Error('Could not determine the first day of the week, because the date ' + 'object is invalid');
|
262
|
+
}
|
205
263
|
while (oFirstDay.getUTCDay() !== iFirstDayOfWeek) {
|
206
264
|
oFirstDay.setUTCDate(oFirstDay.getUTCDate() - 1);
|
207
265
|
iDayCount--;
|
@@ -231,7 +289,7 @@ UniversalDate.getEraByDate = function (sCalendarType, iYear, iMonth, iDay) {
|
|
231
289
|
}
|
232
290
|
};
|
233
291
|
UniversalDate.getCurrentEra = function (sCalendarType) {
|
234
|
-
var oNow =
|
292
|
+
var oNow = UI5Date.getInstance();
|
235
293
|
return this.getEraByDate(sCalendarType, oNow.getFullYear(), oNow.getMonth(), oNow.getDate());
|
236
294
|
};
|
237
295
|
UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
|
@@ -241,7 +299,7 @@ UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
|
|
241
299
|
}
|
242
300
|
};
|
243
301
|
function getEras(sCalendarType) {
|
244
|
-
var oLocale =
|
302
|
+
var oLocale = Configuration.getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), aEras = mEras[sCalendarType];
|
245
303
|
if (!aEras) {
|
246
304
|
var aEras = oLocaleData.getEraDates(sCalendarType);
|
247
305
|
if (!aEras[0]) {
|