@ui5/webcomponents-localization 0.0.0-c6d8872f3 → 0.0.0-c8721b8d2

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.
Files changed (282) hide show
  1. package/.eslintignore +2 -0
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +831 -0
  4. package/README.md +37 -6
  5. package/dist/.tsbuildinfo +1 -0
  6. package/dist/Assets-static.d.ts +1 -0
  7. package/dist/Assets-static.js +3 -0
  8. package/dist/Assets-static.js.map +1 -0
  9. package/dist/Assets.d.ts +1 -0
  10. package/dist/Assets.js +2 -1
  11. package/dist/Assets.js.map +1 -0
  12. package/dist/DateFormat.d.ts +6 -0
  13. package/dist/DateFormat.js +6 -2
  14. package/dist/DateFormat.js.map +1 -0
  15. package/dist/LocaleData.d.ts +6 -0
  16. package/dist/LocaleData.js +6 -2
  17. package/dist/LocaleData.js.map +1 -0
  18. package/dist/dates/CalendarDate.d.ts +43 -0
  19. package/dist/dates/CalendarDate.js +171 -181
  20. package/dist/dates/CalendarDate.js.map +1 -0
  21. package/dist/dates/ExtremeDates.d.ts +5 -0
  22. package/dist/dates/ExtremeDates.js +29 -0
  23. package/dist/dates/ExtremeDates.js.map +1 -0
  24. package/dist/dates/UI5Date.d.ts +6 -0
  25. package/dist/dates/UI5Date.js +7 -0
  26. package/dist/dates/UI5Date.js.map +1 -0
  27. package/dist/dates/UniversalDate.d.ts +47 -0
  28. package/dist/dates/UniversalDate.js +5 -0
  29. package/dist/dates/UniversalDate.js.map +1 -0
  30. package/dist/dates/calculateWeekNumber.d.ts +5 -0
  31. package/dist/dates/calculateWeekNumber.js +42 -48
  32. package/dist/dates/calculateWeekNumber.js.map +1 -0
  33. package/dist/dates/convertMonthNumbersToMonthNames.d.ts +16 -0
  34. package/dist/dates/convertMonthNumbersToMonthNames.js +30 -0
  35. package/dist/dates/convertMonthNumbersToMonthNames.js.map +1 -0
  36. package/dist/dates/getDaysInMonth.d.ts +3 -0
  37. package/dist/dates/getDaysInMonth.js +10 -0
  38. package/dist/dates/getDaysInMonth.js.map +1 -0
  39. package/dist/dates/getRoundedTimestamp.d.ts +7 -0
  40. package/dist/dates/getRoundedTimestamp.js +15 -0
  41. package/dist/dates/getRoundedTimestamp.js.map +1 -0
  42. package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
  43. package/dist/dates/getTodayUTCTimestamp.js +9 -0
  44. package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
  45. package/dist/dates/modifyDateBy.d.ts +14 -0
  46. package/dist/dates/modifyDateBy.js +55 -0
  47. package/dist/dates/modifyDateBy.js.map +1 -0
  48. package/dist/dates/transformDateToSecondaryType.d.ts +7 -0
  49. package/dist/dates/transformDateToSecondaryType.js +18 -0
  50. package/dist/dates/transformDateToSecondaryType.js.map +1 -0
  51. package/dist/features/calendar/Buddhist.js +1 -0
  52. package/dist/features/calendar/Buddhist.js.map +1 -0
  53. package/dist/features/calendar/Gregorian.js +1 -0
  54. package/dist/features/calendar/Gregorian.js.map +1 -0
  55. package/dist/features/calendar/Islamic.js +1 -0
  56. package/dist/features/calendar/Islamic.js.map +1 -0
  57. package/dist/features/calendar/Japanese.js +1 -0
  58. package/dist/features/calendar/Japanese.js.map +1 -0
  59. package/dist/features/calendar/Persian.js +1 -0
  60. package/dist/features/calendar/Persian.js.map +1 -0
  61. package/dist/generated/assets/cldr/ar.json +5531 -5904
  62. package/dist/generated/assets/cldr/ar_EG.json +5531 -5904
  63. package/dist/generated/assets/cldr/ar_SA.json +5530 -5904
  64. package/dist/generated/assets/cldr/bg.json +4452 -4977
  65. package/dist/generated/assets/cldr/ca.json +4440 -4994
  66. package/dist/generated/assets/cldr/cs.json +4960 -5496
  67. package/dist/generated/assets/cldr/cy.json +5213 -0
  68. package/dist/generated/assets/cldr/da.json +4308 -4886
  69. package/dist/generated/assets/cldr/de.json +4313 -4914
  70. package/dist/generated/assets/cldr/de_AT.json +4314 -4915
  71. package/dist/generated/assets/cldr/de_CH.json +4312 -4913
  72. package/dist/generated/assets/cldr/el.json +4281 -4881
  73. package/dist/generated/assets/cldr/el_CY.json +4281 -4881
  74. package/dist/generated/assets/cldr/en.json +4316 -4968
  75. package/dist/generated/assets/cldr/en_AU.json +4319 -4960
  76. package/dist/generated/assets/cldr/en_GB.json +4329 -4969
  77. package/dist/generated/assets/cldr/en_HK.json +4337 -4975
  78. package/dist/generated/assets/cldr/en_IE.json +4328 -4969
  79. package/dist/generated/assets/cldr/en_IN.json +4333 -4970
  80. package/dist/generated/assets/cldr/en_NZ.json +4328 -4969
  81. package/dist/generated/assets/cldr/en_PG.json +4329 -4970
  82. package/dist/generated/assets/cldr/en_SG.json +4333 -4971
  83. package/dist/generated/assets/cldr/en_ZA.json +4329 -4970
  84. package/dist/generated/assets/cldr/es.json +4331 -4910
  85. package/dist/generated/assets/cldr/es_AR.json +4334 -4912
  86. package/dist/generated/assets/cldr/es_BO.json +4333 -4911
  87. package/dist/generated/assets/cldr/es_CL.json +4334 -4912
  88. package/dist/generated/assets/cldr/es_CO.json +4333 -4911
  89. package/dist/generated/assets/cldr/es_MX.json +4335 -4913
  90. package/dist/generated/assets/cldr/es_PE.json +4333 -4911
  91. package/dist/generated/assets/cldr/es_UY.json +4335 -4913
  92. package/dist/generated/assets/cldr/es_VE.json +4334 -4912
  93. package/dist/generated/assets/cldr/et.json +4340 -4965
  94. package/dist/generated/assets/cldr/fa.json +4367 -4881
  95. package/dist/generated/assets/cldr/fi.json +4463 -5006
  96. package/dist/generated/assets/cldr/fr.json +4357 -4977
  97. package/dist/generated/assets/cldr/fr_BE.json +4357 -4977
  98. package/dist/generated/assets/cldr/fr_CA.json +4351 -4971
  99. package/dist/generated/assets/cldr/fr_CH.json +4375 -4995
  100. package/dist/generated/assets/cldr/fr_LU.json +4357 -4977
  101. package/dist/generated/assets/cldr/he.json +4869 -5376
  102. package/dist/generated/assets/cldr/hi.json +4295 -4827
  103. package/dist/generated/assets/cldr/hr.json +4583 -4917
  104. package/dist/generated/assets/cldr/hu.json +4364 -4854
  105. package/dist/generated/assets/cldr/id.json +4060 -4656
  106. package/dist/generated/assets/cldr/it.json +4299 -4948
  107. package/dist/generated/assets/cldr/it_CH.json +4299 -4948
  108. package/dist/generated/assets/cldr/ja.json +4211 -4828
  109. package/dist/generated/assets/cldr/kk.json +4339 -4723
  110. package/dist/generated/assets/cldr/ko.json +4189 -4736
  111. package/dist/generated/assets/cldr/lt.json +4850 -5479
  112. package/dist/generated/assets/cldr/lv.json +4587 -5110
  113. package/dist/generated/assets/cldr/ms.json +4021 -4513
  114. package/dist/generated/assets/cldr/nb.json +4335 -4975
  115. package/dist/generated/assets/cldr/nl.json +4294 -4882
  116. package/dist/generated/assets/cldr/nl_BE.json +4294 -4882
  117. package/dist/generated/assets/cldr/pl.json +4667 -5174
  118. package/dist/generated/assets/cldr/pt.json +4235 -4803
  119. package/dist/generated/assets/cldr/pt_PT.json +4372 -4938
  120. package/dist/generated/assets/cldr/ro.json +4563 -5088
  121. package/dist/generated/assets/cldr/ru.json +4909 -5405
  122. package/dist/generated/assets/cldr/ru_UA.json +4909 -5405
  123. package/dist/generated/assets/cldr/sk.json +4939 -5368
  124. package/dist/generated/assets/cldr/sl.json +4910 -5338
  125. package/dist/generated/assets/cldr/sr.json +4585 -5124
  126. package/dist/generated/assets/cldr/sr_Latn.json +4576 -0
  127. package/dist/generated/assets/cldr/sv.json +4362 -5009
  128. package/dist/generated/assets/cldr/th.json +4214 -4795
  129. package/dist/generated/assets/cldr/tr.json +4400 -4977
  130. package/dist/generated/assets/cldr/uk.json +4858 -5351
  131. package/dist/generated/assets/cldr/vi.json +4070 -4671
  132. package/dist/generated/assets/cldr/zh_CN.json +4100 -4630
  133. package/dist/generated/assets/cldr/zh_HK.json +4108 -4638
  134. package/dist/generated/assets/cldr/zh_SG.json +4108 -4638
  135. package/dist/generated/assets/cldr/zh_TW.json +4131 -4726
  136. package/dist/generated/json-imports/LocaleData-static.d.ts +1 -0
  137. package/dist/generated/json-imports/LocaleData-static.js +88 -0
  138. package/dist/generated/json-imports/LocaleData-static.js.map +1 -0
  139. package/dist/generated/json-imports/LocaleData.d.ts +1 -0
  140. package/dist/generated/json-imports/LocaleData.js +91 -0
  141. package/dist/generated/json-imports/LocaleData.js.map +1 -0
  142. package/dist/getCachedLocaleDataInstance.d.ts +4 -0
  143. package/dist/getCachedLocaleDataInstance.js +10 -0
  144. package/dist/getCachedLocaleDataInstance.js.map +1 -0
  145. package/dist/locale/getLocaleData.d.ts +11 -0
  146. package/dist/locale/getLocaleData.js +13 -17
  147. package/dist/locale/getLocaleData.js.map +1 -0
  148. package/dist/sap/base/Log.js +28 -37
  149. package/dist/sap/base/assert.js +5 -10
  150. package/dist/sap/base/i18n/LanguageTag.js +35 -0
  151. package/dist/sap/base/i18n/Localization.d.ts +4 -0
  152. package/dist/sap/base/i18n/Localization.js +12 -0
  153. package/dist/sap/base/i18n/Localization.js.map +1 -0
  154. package/dist/sap/base/i18n/date/CalendarType.js +8 -0
  155. package/dist/sap/base/i18n/date/CalendarWeekNumbering.js +30 -0
  156. package/dist/sap/base/i18n/date/TimezoneUtils.js +89 -0
  157. package/dist/sap/base/util/LoaderExtensions.d.ts +4 -0
  158. package/dist/sap/base/util/LoaderExtensions.js +11 -4
  159. package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
  160. package/dist/sap/base/util/ObjectPath.js +1 -1
  161. package/dist/sap/base/util/array/uniqueSort.js +7 -7
  162. package/dist/sap/base/util/deepEqual.js +1 -5
  163. package/dist/sap/ui/base/Interface.js +3 -5
  164. package/dist/sap/ui/base/Metadata.js +21 -12
  165. package/dist/sap/ui/base/Object.js +26 -2
  166. package/dist/sap/ui/core/CalendarType.js +2 -8
  167. package/dist/sap/ui/core/Configuration.d.ts +18 -0
  168. package/dist/sap/ui/core/Configuration.js +23 -0
  169. package/dist/sap/ui/core/Configuration.js.map +1 -0
  170. package/dist/sap/ui/core/Core.d.ts +27 -0
  171. package/dist/sap/ui/core/Core.js +7 -32
  172. package/dist/sap/ui/core/Core.js.map +1 -0
  173. package/dist/sap/ui/core/FormatSettings.d.ts +10 -0
  174. package/dist/sap/ui/core/FormatSettings.js +14 -0
  175. package/dist/sap/ui/core/FormatSettings.js.map +1 -0
  176. package/dist/sap/ui/core/Locale.js +28 -86
  177. package/dist/sap/ui/core/LocaleData.js +237 -1538
  178. package/dist/sap/ui/core/date/Buddhist.js +0 -6
  179. package/dist/sap/ui/core/date/CalendarUtils.js +25 -0
  180. package/dist/sap/ui/core/date/CalendarWeekNumbering.js +2 -0
  181. package/dist/sap/ui/core/date/Islamic.js +3 -3
  182. package/dist/sap/ui/core/date/Japanese.js +4 -4
  183. package/dist/sap/ui/core/date/UI5Date.js +305 -0
  184. package/dist/sap/ui/core/date/UniversalDate.js +74 -25
  185. package/dist/sap/ui/core/format/DateFormat.js +881 -517
  186. package/dist/sap/ui/core/format/TimezoneUtil.js +2 -0
  187. package/package-scripts.cjs +32 -0
  188. package/package.json +16 -13
  189. package/src/generated/assets/cldr/ar.json +5533 -0
  190. package/src/generated/assets/cldr/ar_EG.json +5533 -0
  191. package/src/generated/assets/cldr/ar_SA.json +5532 -0
  192. package/src/generated/assets/cldr/bg.json +4454 -0
  193. package/src/generated/assets/cldr/ca.json +4442 -0
  194. package/src/generated/assets/cldr/cs.json +4962 -0
  195. package/src/generated/assets/cldr/cy.json +5213 -0
  196. package/src/generated/assets/cldr/da.json +4310 -0
  197. package/src/generated/assets/cldr/de.json +4315 -0
  198. package/src/generated/assets/cldr/de_AT.json +4316 -0
  199. package/src/generated/assets/cldr/de_CH.json +4314 -0
  200. package/src/generated/assets/cldr/el.json +4283 -0
  201. package/src/generated/assets/cldr/el_CY.json +4283 -0
  202. package/src/generated/assets/cldr/en.json +4318 -0
  203. package/src/generated/assets/cldr/en_AU.json +4321 -0
  204. package/src/generated/assets/cldr/en_GB.json +4331 -0
  205. package/src/generated/assets/cldr/en_HK.json +4339 -0
  206. package/src/generated/assets/cldr/en_IE.json +4330 -0
  207. package/src/generated/assets/cldr/en_IN.json +4335 -0
  208. package/src/generated/assets/cldr/en_NZ.json +4330 -0
  209. package/src/generated/assets/cldr/en_PG.json +4331 -0
  210. package/src/generated/assets/cldr/en_SG.json +4335 -0
  211. package/src/generated/assets/cldr/en_ZA.json +4331 -0
  212. package/src/generated/assets/cldr/es.json +4333 -0
  213. package/src/generated/assets/cldr/es_AR.json +4336 -0
  214. package/src/generated/assets/cldr/es_BO.json +4335 -0
  215. package/src/generated/assets/cldr/es_CL.json +4336 -0
  216. package/src/generated/assets/cldr/es_CO.json +4335 -0
  217. package/src/generated/assets/cldr/es_MX.json +4337 -0
  218. package/src/generated/assets/cldr/es_PE.json +4335 -0
  219. package/src/generated/assets/cldr/es_UY.json +4337 -0
  220. package/src/generated/assets/cldr/es_VE.json +4336 -0
  221. package/src/generated/assets/cldr/et.json +4342 -0
  222. package/src/generated/assets/cldr/fa.json +4369 -0
  223. package/src/generated/assets/cldr/fi.json +4465 -0
  224. package/src/generated/assets/cldr/fr.json +4359 -0
  225. package/src/generated/assets/cldr/fr_BE.json +4359 -0
  226. package/src/generated/assets/cldr/fr_CA.json +4353 -0
  227. package/src/generated/assets/cldr/fr_CH.json +4377 -0
  228. package/src/generated/assets/cldr/fr_LU.json +4359 -0
  229. package/src/generated/assets/cldr/he.json +4871 -0
  230. package/src/generated/assets/cldr/hi.json +4297 -0
  231. package/src/generated/assets/cldr/hr.json +4585 -0
  232. package/src/generated/assets/cldr/hu.json +4366 -0
  233. package/src/generated/assets/cldr/id.json +4062 -0
  234. package/src/generated/assets/cldr/it.json +4301 -0
  235. package/src/generated/assets/cldr/it_CH.json +4301 -0
  236. package/src/generated/assets/cldr/ja.json +4213 -0
  237. package/src/generated/assets/cldr/kk.json +4341 -0
  238. package/src/generated/assets/cldr/ko.json +4191 -0
  239. package/src/generated/assets/cldr/lt.json +4852 -0
  240. package/src/generated/assets/cldr/lv.json +4589 -0
  241. package/src/generated/assets/cldr/ms.json +4023 -0
  242. package/src/generated/assets/cldr/nb.json +4337 -0
  243. package/src/generated/assets/cldr/nl.json +4296 -0
  244. package/src/generated/assets/cldr/nl_BE.json +4296 -0
  245. package/src/generated/assets/cldr/pl.json +4669 -0
  246. package/src/generated/assets/cldr/pt.json +4237 -0
  247. package/src/generated/assets/cldr/pt_PT.json +4374 -0
  248. package/src/generated/assets/cldr/ro.json +4565 -0
  249. package/src/generated/assets/cldr/ru.json +4911 -0
  250. package/src/generated/assets/cldr/ru_UA.json +4911 -0
  251. package/src/generated/assets/cldr/sk.json +4941 -0
  252. package/src/generated/assets/cldr/sl.json +4912 -0
  253. package/src/generated/assets/cldr/sr.json +4587 -0
  254. package/src/generated/assets/cldr/sr_Latn.json +4576 -0
  255. package/src/generated/assets/cldr/sv.json +4364 -0
  256. package/src/generated/assets/cldr/th.json +4216 -0
  257. package/src/generated/assets/cldr/tr.json +4402 -0
  258. package/src/generated/assets/cldr/uk.json +4860 -0
  259. package/src/generated/assets/cldr/vi.json +4072 -0
  260. package/src/generated/assets/cldr/zh_CN.json +4102 -0
  261. package/src/generated/assets/cldr/zh_HK.json +4110 -0
  262. package/src/generated/assets/cldr/zh_SG.json +4110 -0
  263. package/src/generated/assets/cldr/zh_TW.json +4133 -0
  264. package/tsconfig.json +23 -0
  265. package/used-modules.txt +15 -7
  266. package/dist/json-imports/LocaleData.js +0 -171
  267. package/package-scripts.js +0 -30
  268. package/src/Assets.js +0 -2
  269. package/src/DateFormat.js +0 -3
  270. package/src/LocaleData.js +0 -3
  271. package/src/dates/CalendarDate.js +0 -203
  272. package/src/dates/calculateWeekNumber.js +0 -51
  273. package/src/json-imports/LocaleData.js +0 -171
  274. package/src/locale/getLocaleData.js +0 -27
  275. package/src/sap/base/util/LoaderExtensions.js +0 -7
  276. package/src/sap/ui/core/Core.js +0 -38
  277. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
  278. /package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
  279. /package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
  280. /package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
  281. /package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
  282. /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,25 @@
1
+ import CalendarWeekNumbering from './CalendarWeekNumbering.js';
2
+ import Configuration from '../Configuration.js';
3
+ import LocaleData from '../LocaleData.js';
4
+ var CalendarUtils = {
5
+ getWeekConfigurationValues: function (sCalendarWeekNumbering, oLocale) {
6
+ var oLocaleData, oWeekConfigurationValues;
7
+ if (!sCalendarWeekNumbering) {
8
+ return CalendarUtils.getWeekConfigurationValues(Configuration.getCalendarWeekNumbering(), oLocale);
9
+ }
10
+ oWeekConfigurationValues = CalendarWeekNumbering.getWeekConfigurationValues(sCalendarWeekNumbering);
11
+ if (oWeekConfigurationValues) {
12
+ return oWeekConfigurationValues;
13
+ }
14
+ if (sCalendarWeekNumbering === CalendarWeekNumbering.Default) {
15
+ oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
16
+ oLocaleData = LocaleData.getInstance(oLocale);
17
+ return {
18
+ firstDayOfWeek: oLocaleData.getFirstDayOfWeek(),
19
+ minimalDaysInFirstWeek: oLocaleData.getMinimalDaysInFirstWeek()
20
+ };
21
+ }
22
+ return undefined;
23
+ }
24
+ };
25
+ export default CalendarUtils;
@@ -0,0 +1,2 @@
1
+ import CalendarWeekNumbering from '../../../base/i18n/date/CalendarWeekNumbering.js';
2
+ export default CalendarWeekNumbering;
@@ -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 = Core.getConfiguration().getFormatSettings().getLegacyDateFormat();
105
+ sDateFormat = Configuration.getFormatSettings().getLegacyDateFormat();
106
106
  sDateFormat = _isSupportedIslamicCalendarType(sDateFormat) ? sDateFormat : 'A';
107
- oCustomizationJSON = Core.getConfiguration().getFormatSettings().getLegacyDateCalendarCustomizing();
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,11 +19,14 @@ 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();
22
28
  case 1:
23
- return new clDate(aArgs[0]);
29
+ return new clDate(aArgs[0] instanceof Date ? aArgs[0].getTime() : aArgs[0]);
24
30
  case 2:
25
31
  return new clDate(aArgs[0], aArgs[1]);
26
32
  case 3:
@@ -40,18 +46,21 @@ UniversalDate.getInstance = function (oDate, sCalendarType) {
40
46
  if (oDate instanceof UniversalDate) {
41
47
  oDate = oDate.getJSDate();
42
48
  }
49
+ if (oDate && isNaN(oDate.getTime())) {
50
+ throw new Error('The given date object is invalid');
51
+ }
43
52
  if (!sCalendarType) {
44
- sCalendarType = Core.getConfiguration().getCalendarType();
53
+ sCalendarType = Configuration.getCalendarType();
45
54
  }
46
55
  clDate = UniversalDate.getClass(sCalendarType);
47
56
  oInstance = Object.create(clDate.prototype);
48
- oInstance.oDate = oDate;
57
+ oInstance.oDate = oDate ? UI5Date.getInstance(oDate) : UI5Date.getInstance();
49
58
  oInstance.sCalendarType = sCalendarType;
50
59
  return oInstance;
51
60
  };
52
61
  UniversalDate.getClass = function (sCalendarType) {
53
62
  if (!sCalendarType) {
54
- sCalendarType = Core.getConfiguration().getCalendarType();
63
+ sCalendarType = Configuration.getCalendarType();
55
64
  }
56
65
  return _Calendars.get(sCalendarType);
57
66
  };
@@ -114,18 +123,18 @@ UniversalDate.prototype.getUTCEra = function () {
114
123
  };
115
124
  UniversalDate.prototype.setUTCEra = function (iEra) {
116
125
  };
117
- UniversalDate.prototype.getWeek = function () {
118
- return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate());
126
+ UniversalDate.prototype.getWeek = function (oLocale, vCalendarWeekNumbering) {
127
+ return UniversalDate.getWeekByDate(this.sCalendarType, this.getFullYear(), this.getMonth(), this.getDate(), oLocale, vCalendarWeekNumbering);
119
128
  };
120
- UniversalDate.prototype.setWeek = function (oWeek) {
121
- var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week);
129
+ UniversalDate.prototype.setWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
130
+ var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
122
131
  this.setFullYear(oDate.year, oDate.month, oDate.day);
123
132
  };
124
- UniversalDate.prototype.getUTCWeek = function () {
125
- return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate());
133
+ UniversalDate.prototype.getUTCWeek = function (oLocale, vCalendarWeekNumbering) {
134
+ return UniversalDate.getWeekByDate(this.sCalendarType, this.getUTCFullYear(), this.getUTCMonth(), this.getUTCDate(), oLocale, vCalendarWeekNumbering);
126
135
  };
127
- UniversalDate.prototype.setUTCWeek = function (oWeek) {
128
- var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week);
136
+ UniversalDate.prototype.setUTCWeek = function (oWeek, oLocale, vCalendarWeekNumbering) {
137
+ var oDate = UniversalDate.getFirstDateOfWeek(this.sCalendarType, oWeek.year || this.getFullYear(), oWeek.week, oLocale, vCalendarWeekNumbering);
129
138
  this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
130
139
  };
131
140
  UniversalDate.prototype.getQuarter = function () {
@@ -159,15 +168,22 @@ UniversalDate.prototype.getTimezoneLong = function () {
159
168
  }
160
169
  };
161
170
  var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
162
- UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
163
- var oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale(), clDate = this.getClass(sCalendarType), oFirstDay = getFirstDayOfFirstWeek(clDate, iYear), oDate = new clDate(clDate.UTC(iYear, iMonth, iDay)), iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
164
- if (oLocale.getRegion() === 'US') {
171
+ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay, oLocale, vCalendarWeekNumbering) {
172
+ vCalendarWeekNumbering = vCalendarWeekNumbering || Configuration.getCalendarWeekNumbering();
173
+ checkWeekConfig(vCalendarWeekNumbering);
174
+ oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
175
+ var clDate = this.getClass(sCalendarType);
176
+ var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
177
+ var oDate = new clDate(clDate.UTC(iYear, iMonth, iDay));
178
+ var iWeek, iLastYear, iNextYear, oLastFirstDay, oNextFirstDay;
179
+ var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
180
+ if (bSplitWeek) {
165
181
  iWeek = calculateWeeks(oFirstDay, oDate);
166
182
  } else {
167
183
  iLastYear = iYear - 1;
168
184
  iNextYear = iYear + 1;
169
- oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
170
- oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
185
+ oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, vCalendarWeekNumbering);
186
+ oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, vCalendarWeekNumbering);
171
187
  if (oDate >= oNextFirstDay) {
172
188
  iYear = iNextYear;
173
189
  iWeek = 0;
@@ -183,9 +199,15 @@ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
183
199
  week: iWeek
184
200
  };
185
201
  };
186
- UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
187
- var oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale(), clDate = this.getClass(sCalendarType), oFirstDay = getFirstDayOfFirstWeek(clDate, iYear), oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
188
- if (oLocale.getRegion() === 'US' && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
202
+ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek, oLocale, vCalendarWeekNumbering) {
203
+ vCalendarWeekNumbering = vCalendarWeekNumbering || Configuration.getCalendarWeekNumbering();
204
+ checkWeekConfig(vCalendarWeekNumbering);
205
+ oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
206
+ var clDate = this.getClass(sCalendarType);
207
+ var oFirstDay = getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering);
208
+ var oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
209
+ var bSplitWeek = isSplitWeek(vCalendarWeekNumbering, oLocale);
210
+ if (bSplitWeek && iWeek === 0 && oFirstDay.getUTCFullYear() < iYear) {
189
211
  return {
190
212
  year: iYear,
191
213
  month: 0,
@@ -198,8 +220,35 @@ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
198
220
  day: oDate.getUTCDate()
199
221
  };
200
222
  };
201
- function getFirstDayOfFirstWeek(clDate, iYear) {
202
- var oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), iMinDays = oLocaleData.getMinimalDaysInFirstWeek(), iFirstDayOfWeek = oLocaleData.getFirstDayOfWeek(), oFirstDay = new clDate(clDate.UTC(iYear, 0, 1)), iDayCount = 7;
223
+ function isSplitWeek(vCalendarWeekNumbering, oLocale) {
224
+ var oLocaleData = LocaleData.getInstance(oLocale);
225
+ return (vCalendarWeekNumbering === CalendarWeekNumbering.Default || vCalendarWeekNumbering === CalendarWeekNumbering.WesternTraditional) && oLocaleData.firstDayStartsFirstWeek();
226
+ }
227
+ function checkWeekConfig(vCalendarWeekNumbering) {
228
+ if (typeof vCalendarWeekNumbering === 'object') {
229
+ if (typeof vCalendarWeekNumbering.firstDayOfWeek !== 'number' || typeof vCalendarWeekNumbering.minimalDaysInFirstWeek !== 'number') {
230
+ throw new TypeError('Week config requires firstDayOfWeek and minimalDaysInFirstWeek to be set');
231
+ }
232
+ } else if (!Object.values(CalendarWeekNumbering).includes(vCalendarWeekNumbering)) {
233
+ throw new TypeError('Illegal format option calendarWeekNumbering: \'' + vCalendarWeekNumbering + '\'');
234
+ }
235
+ }
236
+ function resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale) {
237
+ if (typeof vCalendarWeekNumbering === 'object' && typeof vCalendarWeekNumbering.firstDayOfWeek === 'number' && typeof vCalendarWeekNumbering.minimalDaysInFirstWeek === 'number') {
238
+ return vCalendarWeekNumbering;
239
+ }
240
+ return CalendarUtils.getWeekConfigurationValues(vCalendarWeekNumbering, oLocale);
241
+ }
242
+ function getFirstDayOfFirstWeek(clDate, iYear, oLocale, vCalendarWeekNumbering) {
243
+ oLocale = oLocale || Configuration.getFormatSettings().getFormatLocale();
244
+ var oWeekConfig = resolveCalendarWeekConfiguration(vCalendarWeekNumbering, oLocale);
245
+ var iMinDays = oWeekConfig.minimalDaysInFirstWeek;
246
+ var iFirstDayOfWeek = oWeekConfig.firstDayOfWeek;
247
+ var oFirstDay = new clDate(clDate.UTC(iYear, 0, 1));
248
+ var iDayCount = 7;
249
+ if (isNaN(oFirstDay.getTime())) {
250
+ throw new Error('Could not determine the first day of the week, because the date ' + 'object is invalid');
251
+ }
203
252
  while (oFirstDay.getUTCDay() !== iFirstDayOfWeek) {
204
253
  oFirstDay.setUTCDate(oFirstDay.getUTCDate() - 1);
205
254
  iDayCount--;
@@ -229,7 +278,7 @@ UniversalDate.getEraByDate = function (sCalendarType, iYear, iMonth, iDay) {
229
278
  }
230
279
  };
231
280
  UniversalDate.getCurrentEra = function (sCalendarType) {
232
- var oNow = new Date();
281
+ var oNow = UI5Date.getInstance();
233
282
  return this.getEraByDate(sCalendarType, oNow.getFullYear(), oNow.getMonth(), oNow.getDate());
234
283
  };
235
284
  UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
@@ -239,7 +288,7 @@ UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
239
288
  }
240
289
  };
241
290
  function getEras(sCalendarType) {
242
- var oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), aEras = mEras[sCalendarType];
291
+ var oLocale = Configuration.getFormatSettings().getFormatLocale(), oLocaleData = LocaleData.getInstance(oLocale), aEras = mEras[sCalendarType];
243
292
  if (!aEras) {
244
293
  var aEras = oLocaleData.getEraDates(sCalendarType);
245
294
  if (!aEras[0]) {