dayjs.js 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. exports.default = void 0;
  7. var _dayjs = _interopRequireDefault(require("dayjs"));
  8. var _weekday = _interopRequireDefault(require("dayjs/plugin/weekday"));
  9. var _localeData = _interopRequireDefault(require("dayjs/plugin/localeData"));
  10. var _weekOfYear = _interopRequireDefault(require("dayjs/plugin/weekOfYear"));
  11. var _weekYear = _interopRequireDefault(require("dayjs/plugin/weekYear"));
  12. var _advancedFormat = _interopRequireDefault(require("dayjs/plugin/advancedFormat"));
  13. var _customParseFormat = _interopRequireDefault(require("dayjs/plugin/customParseFormat"));
  14. _dayjs.default.extend(_customParseFormat.default);
  15. _dayjs.default.extend(_advancedFormat.default);
  16. _dayjs.default.extend(_weekday.default);
  17. _dayjs.default.extend(_localeData.default);
  18. _dayjs.default.extend(_weekOfYear.default);
  19. _dayjs.default.extend(_weekYear.default);
  20. _dayjs.default.extend(function (o, c) {
  21. // todo support Wo (ISO week)
  22. var proto = c.prototype;
  23. var oldFormat = proto.format;
  24. proto.format = function f(formatStr) {
  25. var str = (formatStr || '').replace('Wo', 'wo');
  26. return oldFormat.bind(this)(str);
  27. };
  28. });
  29. var localeMap = {
  30. // ar_EG:
  31. // az_AZ:
  32. // bg_BG:
  33. bn_BD: 'bn-bd',
  34. by_BY: 'be',
  35. // ca_ES:
  36. // cs_CZ:
  37. // da_DK:
  38. // de_DE:
  39. // el_GR:
  40. en_GB: 'en-gb',
  41. en_US: 'en',
  42. // es_ES:
  43. // et_EE:
  44. // fa_IR:
  45. // fi_FI:
  46. fr_BE: 'fr',
  47. // todo: dayjs has no fr_BE locale, use fr at present
  48. fr_CA: 'fr-ca',
  49. // fr_FR:
  50. // ga_IE:
  51. // gl_ES:
  52. // he_IL:
  53. // hi_IN:
  54. // hr_HR:
  55. // hu_HU:
  56. hy_AM: 'hy-am',
  57. // id_ID:
  58. // is_IS:
  59. // it_IT:
  60. // ja_JP:
  61. // ka_GE:
  62. // kk_KZ:
  63. // km_KH:
  64. kmr_IQ: 'ku',
  65. // kn_IN:
  66. // ko_KR:
  67. // ku_IQ: // previous ku in antd
  68. // lt_LT:
  69. // lv_LV:
  70. // mk_MK:
  71. // ml_IN:
  72. // mn_MN:
  73. // ms_MY:
  74. // nb_NO:
  75. // ne_NP:
  76. nl_BE: 'nl-be',
  77. // nl_NL:
  78. // pl_PL:
  79. pt_BR: 'pt-br',
  80. // pt_PT:
  81. // ro_RO:
  82. // ru_RU:
  83. // sk_SK:
  84. // sl_SI:
  85. // sr_RS:
  86. // sv_SE:
  87. // ta_IN:
  88. // th_TH:
  89. // tr_TR:
  90. // uk_UA:
  91. // ur_PK:
  92. // vi_VN:
  93. zh_CN: 'zh-cn',
  94. zh_HK: 'zh-hk',
  95. zh_TW: 'zh-tw'
  96. };
  97. var parseLocale = function parseLocale(locale) {
  98. var mapLocale = localeMap[locale];
  99. return mapLocale || locale.split('_')[0];
  100. };
  101. /* istanbul ignore next */
  102. var parseNoMatchNotice = function parseNoMatchNotice() {
  103. // zombieJ:
  104. // When user typing, its always miss match format.
  105. // This check is meaningless.
  106. // https://github.com/ant-design/ant-design/issues/51839
  107. // noteOnce(false, 'Not match any format. Please help to fire a issue about this.');
  108. };
  109. var generateConfig = {
  110. // get
  111. getNow: function getNow() {
  112. var now = (0, _dayjs.default)();
  113. // https://github.com/ant-design/ant-design/discussions/50934
  114. if (typeof now.tz === 'function') {
  115. return now.tz(); // use default timezone
  116. }
  117. return now;
  118. },
  119. getFixedDate: function getFixedDate(string) {
  120. return (0, _dayjs.default)(string, ['YYYY-M-DD', 'YYYY-MM-DD']);
  121. },
  122. getEndDate: function getEndDate(date) {
  123. return date.endOf('month');
  124. },
  125. getWeekDay: function getWeekDay(date) {
  126. var clone = date.locale('en');
  127. return clone.weekday() + clone.localeData().firstDayOfWeek();
  128. },
  129. getYear: function getYear(date) {
  130. return date.year();
  131. },
  132. getMonth: function getMonth(date) {
  133. return date.month();
  134. },
  135. getDate: function getDate(date) {
  136. return date.date();
  137. },
  138. getHour: function getHour(date) {
  139. return date.hour();
  140. },
  141. getMinute: function getMinute(date) {
  142. return date.minute();
  143. },
  144. getSecond: function getSecond(date) {
  145. return date.second();
  146. },
  147. getMillisecond: function getMillisecond(date) {
  148. return date.millisecond();
  149. },
  150. // set
  151. addYear: function addYear(date, diff) {
  152. return date.add(diff, 'year');
  153. },
  154. addMonth: function addMonth(date, diff) {
  155. return date.add(diff, 'month');
  156. },
  157. addDate: function addDate(date, diff) {
  158. return date.add(diff, 'day');
  159. },
  160. setYear: function setYear(date, year) {
  161. return date.year(year);
  162. },
  163. setMonth: function setMonth(date, month) {
  164. return date.month(month);
  165. },
  166. setDate: function setDate(date, num) {
  167. return date.date(num);
  168. },
  169. setHour: function setHour(date, hour) {
  170. return date.hour(hour);
  171. },
  172. setMinute: function setMinute(date, minute) {
  173. return date.minute(minute);
  174. },
  175. setSecond: function setSecond(date, second) {
  176. return date.second(second);
  177. },
  178. setMillisecond: function setMillisecond(date, milliseconds) {
  179. return date.millisecond(milliseconds);
  180. },
  181. // Compare
  182. isAfter: function isAfter(date1, date2) {
  183. return date1.isAfter(date2);
  184. },
  185. isValidate: function isValidate(date) {
  186. return date.isValid();
  187. },
  188. locale: {
  189. getWeekFirstDay: function getWeekFirstDay(locale) {
  190. return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().firstDayOfWeek();
  191. },
  192. getWeekFirstDate: function getWeekFirstDate(locale, date) {
  193. return date.locale(parseLocale(locale)).weekday(0);
  194. },
  195. getWeek: function getWeek(locale, date) {
  196. return date.locale(parseLocale(locale)).week();
  197. },
  198. getShortWeekDays: function getShortWeekDays(locale) {
  199. return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().weekdaysMin();
  200. },
  201. getShortMonths: function getShortMonths(locale) {
  202. return (0, _dayjs.default)().locale(parseLocale(locale)).localeData().monthsShort();
  203. },
  204. format: function format(locale, date, _format) {
  205. return date.locale(parseLocale(locale)).format(_format);
  206. },
  207. parse: function parse(locale, text, formats) {
  208. var localeStr = parseLocale(locale);
  209. for (var i = 0; i < formats.length; i += 1) {
  210. var format = formats[i];
  211. var formatText = text;
  212. if (format.includes('wo') || format.includes('Wo')) {
  213. // parse Wo
  214. var year = formatText.split('-')[0];
  215. var weekStr = formatText.split('-')[1];
  216. var firstWeek = (0, _dayjs.default)(year, 'YYYY').startOf('year').locale(localeStr);
  217. for (var j = 0; j <= 52; j += 1) {
  218. var nextWeek = firstWeek.add(j, 'week');
  219. if (nextWeek.format('Wo') === weekStr) {
  220. return nextWeek;
  221. }
  222. }
  223. parseNoMatchNotice();
  224. return null;
  225. }
  226. var date = (0, _dayjs.default)(formatText, format, true).locale(localeStr);
  227. if (date.isValid()) {
  228. return date;
  229. }
  230. }
  231. if (text) {
  232. parseNoMatchNotice();
  233. }
  234. return null;
  235. }
  236. }
  237. };
  238. var _default = exports.default = generateConfig;