@ui5/webcomponents-localization 0.0.0-d9621a5cb → 0.0.0-d9b978d1d

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 (283) hide show
  1. package/.eslintignore +2 -1
  2. package/.npsrc.json +3 -0
  3. package/CHANGELOG.md +743 -0
  4. package/README.md +37 -6
  5. package/dist/.tsbuildinfo +1 -0
  6. package/{src/Assets-static.js → dist/Assets-static.d.ts} +0 -1
  7. package/dist/Assets-static.js +1 -0
  8. package/dist/Assets-static.js.map +1 -0
  9. package/dist/Assets.d.ts +1 -0
  10. package/dist/Assets.js +1 -0
  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 -201
  20. package/dist/dates/CalendarDate.js.map +1 -0
  21. package/dist/dates/ExtremeDates.d.ts +5 -0
  22. package/dist/dates/ExtremeDates.js +25 -35
  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 +10 -9
  41. package/dist/dates/getRoundedTimestamp.js.map +1 -0
  42. package/dist/dates/getTodayUTCTimestamp.d.ts +7 -0
  43. package/dist/dates/getTodayUTCTimestamp.js +3 -3
  44. package/dist/dates/getTodayUTCTimestamp.js.map +1 -0
  45. package/dist/dates/modifyDateBy.d.ts +14 -0
  46. package/dist/dates/modifyDateBy.js +42 -29
  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 -5906
  62. package/dist/generated/assets/cldr/ar_EG.json +5531 -5906
  63. package/dist/generated/assets/cldr/ar_SA.json +5530 -5906
  64. package/dist/generated/assets/cldr/bg.json +4452 -4979
  65. package/dist/generated/assets/cldr/ca.json +4440 -4996
  66. package/dist/generated/assets/cldr/cs.json +4960 -5498
  67. package/dist/generated/assets/cldr/cy.json +5211 -5884
  68. package/dist/generated/assets/cldr/da.json +4308 -4888
  69. package/dist/generated/assets/cldr/de.json +4313 -4916
  70. package/dist/generated/assets/cldr/de_AT.json +4314 -4917
  71. package/dist/generated/assets/cldr/de_CH.json +4312 -4915
  72. package/dist/generated/assets/cldr/el.json +4281 -4883
  73. package/dist/generated/assets/cldr/el_CY.json +4281 -4883
  74. package/dist/generated/assets/cldr/en.json +4316 -4970
  75. package/dist/generated/assets/cldr/en_AU.json +4319 -4962
  76. package/dist/generated/assets/cldr/en_GB.json +4329 -4971
  77. package/dist/generated/assets/cldr/en_HK.json +4337 -4977
  78. package/dist/generated/assets/cldr/en_IE.json +4328 -4971
  79. package/dist/generated/assets/cldr/en_IN.json +4333 -4972
  80. package/dist/generated/assets/cldr/en_NZ.json +4328 -4971
  81. package/dist/generated/assets/cldr/en_PG.json +4329 -4972
  82. package/dist/generated/assets/cldr/en_SG.json +4333 -4973
  83. package/dist/generated/assets/cldr/en_ZA.json +4329 -4972
  84. package/dist/generated/assets/cldr/es.json +4331 -4912
  85. package/dist/generated/assets/cldr/es_AR.json +4334 -4914
  86. package/dist/generated/assets/cldr/es_BO.json +4333 -4913
  87. package/dist/generated/assets/cldr/es_CL.json +4334 -4914
  88. package/dist/generated/assets/cldr/es_CO.json +4333 -4913
  89. package/dist/generated/assets/cldr/es_MX.json +4335 -4915
  90. package/dist/generated/assets/cldr/es_PE.json +4333 -4913
  91. package/dist/generated/assets/cldr/es_UY.json +4335 -4915
  92. package/dist/generated/assets/cldr/es_VE.json +4334 -4914
  93. package/dist/generated/assets/cldr/et.json +4340 -4967
  94. package/dist/generated/assets/cldr/fa.json +4367 -4883
  95. package/dist/generated/assets/cldr/fi.json +4463 -5008
  96. package/dist/generated/assets/cldr/fr.json +4357 -4979
  97. package/dist/generated/assets/cldr/fr_BE.json +4357 -4979
  98. package/dist/generated/assets/cldr/fr_CA.json +4351 -4973
  99. package/dist/generated/assets/cldr/fr_CH.json +4375 -4997
  100. package/dist/generated/assets/cldr/fr_LU.json +4357 -4979
  101. package/dist/generated/assets/cldr/he.json +4869 -5378
  102. package/dist/generated/assets/cldr/hi.json +4295 -4829
  103. package/dist/generated/assets/cldr/hr.json +4583 -4919
  104. package/dist/generated/assets/cldr/hu.json +4364 -4856
  105. package/dist/generated/assets/cldr/id.json +4060 -4658
  106. package/dist/generated/assets/cldr/it.json +4299 -4950
  107. package/dist/generated/assets/cldr/it_CH.json +4299 -4950
  108. package/dist/generated/assets/cldr/ja.json +4211 -4830
  109. package/dist/generated/assets/cldr/kk.json +4339 -4725
  110. package/dist/generated/assets/cldr/ko.json +4189 -4738
  111. package/dist/generated/assets/cldr/lt.json +4850 -5481
  112. package/dist/generated/assets/cldr/lv.json +4587 -5112
  113. package/dist/generated/assets/cldr/ms.json +4021 -4515
  114. package/dist/generated/assets/cldr/nb.json +4335 -4977
  115. package/dist/generated/assets/cldr/nl.json +4294 -4884
  116. package/dist/generated/assets/cldr/nl_BE.json +4294 -4884
  117. package/dist/generated/assets/cldr/pl.json +4667 -5176
  118. package/dist/generated/assets/cldr/pt.json +4235 -4805
  119. package/dist/generated/assets/cldr/pt_PT.json +4372 -4940
  120. package/dist/generated/assets/cldr/ro.json +4563 -5090
  121. package/dist/generated/assets/cldr/ru.json +4909 -5407
  122. package/dist/generated/assets/cldr/ru_UA.json +4909 -5407
  123. package/dist/generated/assets/cldr/sk.json +4939 -5370
  124. package/dist/generated/assets/cldr/sl.json +4910 -5340
  125. package/dist/generated/assets/cldr/sr.json +4585 -5126
  126. package/dist/generated/assets/cldr/sr_Latn.json +4574 -5127
  127. package/dist/generated/assets/cldr/sv.json +4362 -5011
  128. package/dist/generated/assets/cldr/th.json +4214 -4797
  129. package/dist/generated/assets/cldr/tr.json +4400 -4979
  130. package/dist/generated/assets/cldr/uk.json +4858 -5353
  131. package/dist/generated/assets/cldr/vi.json +4070 -4673
  132. package/dist/generated/assets/cldr/zh_CN.json +4100 -4632
  133. package/dist/generated/assets/cldr/zh_HK.json +4108 -4640
  134. package/dist/generated/assets/cldr/zh_SG.json +4108 -4640
  135. package/dist/generated/assets/cldr/zh_TW.json +4131 -4728
  136. package/dist/generated/json-imports/LocaleData-static.d.ts +1 -0
  137. package/dist/generated/json-imports/LocaleData-static.js +10 -11
  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 +86 -87
  141. package/dist/generated/json-imports/LocaleData.js.map +1 -0
  142. package/dist/getCachedLocaleDataInstance.d.ts +4 -0
  143. package/dist/getCachedLocaleDataInstance.js +6 -9
  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 +9 -12
  159. package/dist/sap/base/util/LoaderExtensions.js.map +1 -0
  160. package/dist/sap/base/util/deepEqual.js +1 -5
  161. package/dist/sap/ui/base/Metadata.js +20 -9
  162. package/dist/sap/ui/base/Object.js +26 -2
  163. package/dist/sap/ui/core/CalendarType.js +2 -8
  164. package/dist/sap/ui/core/Configuration.d.ts +18 -0
  165. package/dist/sap/ui/core/Configuration.js +23 -0
  166. package/dist/sap/ui/core/Configuration.js.map +1 -0
  167. package/dist/sap/ui/core/Core.d.ts +27 -0
  168. package/dist/sap/ui/core/Core.js +7 -32
  169. package/dist/sap/ui/core/Core.js.map +1 -0
  170. package/dist/sap/ui/core/FormatSettings.d.ts +10 -0
  171. package/dist/sap/ui/core/FormatSettings.js +14 -0
  172. package/dist/sap/ui/core/FormatSettings.js.map +1 -0
  173. package/dist/sap/ui/core/Locale.js +28 -110
  174. package/dist/sap/ui/core/LocaleData.js +215 -1537
  175. package/dist/sap/ui/core/date/Buddhist.js +0 -6
  176. package/dist/sap/ui/core/date/CalendarUtils.js +25 -0
  177. package/dist/sap/ui/core/date/CalendarWeekNumbering.js +2 -0
  178. package/dist/sap/ui/core/date/Islamic.js +3 -3
  179. package/dist/sap/ui/core/date/Japanese.js +4 -4
  180. package/dist/sap/ui/core/date/UI5Date.js +305 -0
  181. package/dist/sap/ui/core/date/UniversalDate.js +73 -26
  182. package/dist/sap/ui/core/format/DateFormat.js +849 -494
  183. package/dist/sap/ui/core/format/TimezoneUtil.js +2 -0
  184. package/package-scripts.cjs +32 -0
  185. package/package.json +10 -15
  186. package/src/generated/assets/cldr/ar.json +5533 -0
  187. package/src/generated/assets/cldr/ar_EG.json +5533 -0
  188. package/src/generated/assets/cldr/ar_SA.json +5532 -0
  189. package/src/generated/assets/cldr/bg.json +4454 -0
  190. package/src/generated/assets/cldr/ca.json +4442 -0
  191. package/src/generated/assets/cldr/cs.json +4962 -0
  192. package/src/generated/assets/cldr/cy.json +5213 -0
  193. package/src/generated/assets/cldr/da.json +4310 -0
  194. package/src/generated/assets/cldr/de.json +4315 -0
  195. package/src/generated/assets/cldr/de_AT.json +4316 -0
  196. package/src/generated/assets/cldr/de_CH.json +4314 -0
  197. package/src/generated/assets/cldr/el.json +4283 -0
  198. package/src/generated/assets/cldr/el_CY.json +4283 -0
  199. package/src/generated/assets/cldr/en.json +4318 -0
  200. package/src/generated/assets/cldr/en_AU.json +4321 -0
  201. package/src/generated/assets/cldr/en_GB.json +4331 -0
  202. package/src/generated/assets/cldr/en_HK.json +4339 -0
  203. package/src/generated/assets/cldr/en_IE.json +4330 -0
  204. package/src/generated/assets/cldr/en_IN.json +4335 -0
  205. package/src/generated/assets/cldr/en_NZ.json +4330 -0
  206. package/src/generated/assets/cldr/en_PG.json +4331 -0
  207. package/src/generated/assets/cldr/en_SG.json +4335 -0
  208. package/src/generated/assets/cldr/en_ZA.json +4331 -0
  209. package/src/generated/assets/cldr/es.json +4333 -0
  210. package/src/generated/assets/cldr/es_AR.json +4336 -0
  211. package/src/generated/assets/cldr/es_BO.json +4335 -0
  212. package/src/generated/assets/cldr/es_CL.json +4336 -0
  213. package/src/generated/assets/cldr/es_CO.json +4335 -0
  214. package/src/generated/assets/cldr/es_MX.json +4337 -0
  215. package/src/generated/assets/cldr/es_PE.json +4335 -0
  216. package/src/generated/assets/cldr/es_UY.json +4337 -0
  217. package/src/generated/assets/cldr/es_VE.json +4336 -0
  218. package/src/generated/assets/cldr/et.json +4342 -0
  219. package/src/generated/assets/cldr/fa.json +4369 -0
  220. package/src/generated/assets/cldr/fi.json +4465 -0
  221. package/src/generated/assets/cldr/fr.json +4359 -0
  222. package/src/generated/assets/cldr/fr_BE.json +4359 -0
  223. package/src/generated/assets/cldr/fr_CA.json +4353 -0
  224. package/src/generated/assets/cldr/fr_CH.json +4377 -0
  225. package/src/generated/assets/cldr/fr_LU.json +4359 -0
  226. package/src/generated/assets/cldr/he.json +4871 -0
  227. package/src/generated/assets/cldr/hi.json +4297 -0
  228. package/src/generated/assets/cldr/hr.json +4585 -0
  229. package/src/generated/assets/cldr/hu.json +4366 -0
  230. package/src/generated/assets/cldr/id.json +4062 -0
  231. package/src/generated/assets/cldr/it.json +4301 -0
  232. package/src/generated/assets/cldr/it_CH.json +4301 -0
  233. package/src/generated/assets/cldr/ja.json +4213 -0
  234. package/src/generated/assets/cldr/kk.json +4341 -0
  235. package/src/generated/assets/cldr/ko.json +4191 -0
  236. package/src/generated/assets/cldr/lt.json +4852 -0
  237. package/src/generated/assets/cldr/lv.json +4589 -0
  238. package/src/generated/assets/cldr/ms.json +4023 -0
  239. package/src/generated/assets/cldr/nb.json +4337 -0
  240. package/src/generated/assets/cldr/nl.json +4296 -0
  241. package/src/generated/assets/cldr/nl_BE.json +4296 -0
  242. package/src/generated/assets/cldr/pl.json +4669 -0
  243. package/src/generated/assets/cldr/pt.json +4237 -0
  244. package/src/generated/assets/cldr/pt_PT.json +4374 -0
  245. package/src/generated/assets/cldr/ro.json +4565 -0
  246. package/src/generated/assets/cldr/ru.json +4911 -0
  247. package/src/generated/assets/cldr/ru_UA.json +4911 -0
  248. package/src/generated/assets/cldr/sk.json +4941 -0
  249. package/src/generated/assets/cldr/sl.json +4912 -0
  250. package/src/generated/assets/cldr/sr.json +4587 -0
  251. package/src/generated/assets/cldr/sr_Latn.json +4576 -0
  252. package/src/generated/assets/cldr/sv.json +4364 -0
  253. package/src/generated/assets/cldr/th.json +4216 -0
  254. package/src/generated/assets/cldr/tr.json +4402 -0
  255. package/src/generated/assets/cldr/uk.json +4860 -0
  256. package/src/generated/assets/cldr/vi.json +4072 -0
  257. package/src/generated/assets/cldr/zh_CN.json +4102 -0
  258. package/src/generated/assets/cldr/zh_HK.json +4110 -0
  259. package/src/generated/assets/cldr/zh_SG.json +4110 -0
  260. package/src/generated/assets/cldr/zh_TW.json +4133 -0
  261. package/tsconfig.json +23 -0
  262. package/used-modules.txt +9 -1
  263. package/hash.txt +0 -1
  264. package/package-scripts.js +0 -40
  265. package/src/Assets.js +0 -2
  266. package/src/DateFormat.js +0 -3
  267. package/src/LocaleData.js +0 -3
  268. package/src/dates/CalendarDate.js +0 -223
  269. package/src/dates/ExtremeDates.js +0 -39
  270. package/src/dates/calculateWeekNumber.js +0 -51
  271. package/src/dates/getRoundedTimestamp.js +0 -14
  272. package/src/dates/getTodayUTCTimestamp.js +0 -9
  273. package/src/dates/modifyDateBy.js +0 -42
  274. package/src/getCachedLocaleDataInstance.js +0 -13
  275. package/src/locale/getLocaleData.js +0 -27
  276. package/src/sap/base/util/LoaderExtensions.js +0 -17
  277. package/src/sap/ui/core/Core.js +0 -38
  278. /package/{config/.eslintrc.js → .eslintrc.cjs} +0 -0
  279. /package/{src/features/calendar/Buddhist.js → dist/features/calendar/Buddhist.d.ts} +0 -0
  280. /package/{src/features/calendar/Gregorian.js → dist/features/calendar/Gregorian.d.ts} +0 -0
  281. /package/{src/features/calendar/Islamic.js → dist/features/calendar/Islamic.d.ts} +0 -0
  282. /package/{src/features/calendar/Japanese.js → dist/features/calendar/Japanese.d.ts} +0 -0
  283. /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,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
- } else if (!oDate) {
43
- oDate = new Date();
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 = Core.getConfiguration().getCalendarType();
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 = Core.getConfiguration().getCalendarType();
63
+ sCalendarType = Configuration.getCalendarType();
57
64
  }
58
65
  return _Calendars.get(sCalendarType);
59
66
  };
@@ -116,18 +123,18 @@ UniversalDate.prototype.getUTCEra = function () {
116
123
  };
117
124
  UniversalDate.prototype.setUTCEra = function (iEra) {
118
125
  };
119
- UniversalDate.prototype.getWeek = function () {
120
- 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);
121
128
  };
122
- UniversalDate.prototype.setWeek = function (oWeek) {
123
- 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);
124
131
  this.setFullYear(oDate.year, oDate.month, oDate.day);
125
132
  };
126
- UniversalDate.prototype.getUTCWeek = function () {
127
- 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);
128
135
  };
129
- UniversalDate.prototype.setUTCWeek = function (oWeek) {
130
- 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);
131
138
  this.setUTCFullYear(oDate.year, oDate.month, oDate.day);
132
139
  };
133
140
  UniversalDate.prototype.getQuarter = function () {
@@ -161,15 +168,22 @@ UniversalDate.prototype.getTimezoneLong = function () {
161
168
  }
162
169
  };
163
170
  var iMillisecondsInWeek = 7 * 24 * 60 * 60 * 1000;
164
- UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
165
- 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;
166
- 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) {
167
181
  iWeek = calculateWeeks(oFirstDay, oDate);
168
182
  } else {
169
183
  iLastYear = iYear - 1;
170
184
  iNextYear = iYear + 1;
171
- oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear);
172
- oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear);
185
+ oLastFirstDay = getFirstDayOfFirstWeek(clDate, iLastYear, oLocale, vCalendarWeekNumbering);
186
+ oNextFirstDay = getFirstDayOfFirstWeek(clDate, iNextYear, oLocale, vCalendarWeekNumbering);
173
187
  if (oDate >= oNextFirstDay) {
174
188
  iYear = iNextYear;
175
189
  iWeek = 0;
@@ -185,9 +199,15 @@ UniversalDate.getWeekByDate = function (sCalendarType, iYear, iMonth, iDay) {
185
199
  week: iWeek
186
200
  };
187
201
  };
188
- UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
189
- var oLocale = Core.getConfiguration().getFormatSettings().getFormatLocale(), clDate = this.getClass(sCalendarType), oFirstDay = getFirstDayOfFirstWeek(clDate, iYear), oDate = new clDate(oFirstDay.valueOf() + iWeek * iMillisecondsInWeek);
190
- 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) {
191
211
  return {
192
212
  year: iYear,
193
213
  month: 0,
@@ -200,8 +220,35 @@ UniversalDate.getFirstDateOfWeek = function (sCalendarType, iYear, iWeek) {
200
220
  day: oDate.getUTCDate()
201
221
  };
202
222
  };
203
- function getFirstDayOfFirstWeek(clDate, iYear) {
204
- 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
+ }
205
252
  while (oFirstDay.getUTCDay() !== iFirstDayOfWeek) {
206
253
  oFirstDay.setUTCDate(oFirstDay.getUTCDate() - 1);
207
254
  iDayCount--;
@@ -231,7 +278,7 @@ UniversalDate.getEraByDate = function (sCalendarType, iYear, iMonth, iDay) {
231
278
  }
232
279
  };
233
280
  UniversalDate.getCurrentEra = function (sCalendarType) {
234
- var oNow = new Date();
281
+ var oNow = UI5Date.getInstance();
235
282
  return this.getEraByDate(sCalendarType, oNow.getFullYear(), oNow.getMonth(), oNow.getDate());
236
283
  };
237
284
  UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
@@ -241,7 +288,7 @@ UniversalDate.getEraStartDate = function (sCalendarType, iEra) {
241
288
  }
242
289
  };
243
290
  function getEras(sCalendarType) {
244
- 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];
245
292
  if (!aEras) {
246
293
  var aEras = oLocaleData.getEraDates(sCalendarType);
247
294
  if (!aEras[0]) {