moment.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. import moment from 'moment';
  2. import { noteOnce } from "rc-util/es/warning";
  3. var generateConfig = {
  4. // get
  5. getNow: function getNow() {
  6. return moment();
  7. },
  8. getFixedDate: function getFixedDate(string) {
  9. return moment(string, 'YYYY-MM-DD');
  10. },
  11. getEndDate: function getEndDate(date) {
  12. var clone = date.clone();
  13. return clone.endOf('month');
  14. },
  15. getWeekDay: function getWeekDay(date) {
  16. var clone = date.clone().locale('en_US');
  17. return clone.weekday() + clone.localeData().firstDayOfWeek();
  18. },
  19. getYear: function getYear(date) {
  20. return date.year();
  21. },
  22. getMonth: function getMonth(date) {
  23. return date.month();
  24. },
  25. getDate: function getDate(date) {
  26. return date.date();
  27. },
  28. getHour: function getHour(date) {
  29. return date.hour();
  30. },
  31. getMinute: function getMinute(date) {
  32. return date.minute();
  33. },
  34. getSecond: function getSecond(date) {
  35. return date.second();
  36. },
  37. getMillisecond: function getMillisecond(date) {
  38. return date.millisecond();
  39. },
  40. // set
  41. addYear: function addYear(date, diff) {
  42. var clone = date.clone();
  43. return clone.add(diff, 'year');
  44. },
  45. addMonth: function addMonth(date, diff) {
  46. var clone = date.clone();
  47. return clone.add(diff, 'month');
  48. },
  49. addDate: function addDate(date, diff) {
  50. var clone = date.clone();
  51. return clone.add(diff, 'day');
  52. },
  53. setYear: function setYear(date, year) {
  54. var clone = date.clone();
  55. return clone.year(year);
  56. },
  57. setMonth: function setMonth(date, month) {
  58. var clone = date.clone();
  59. return clone.month(month);
  60. },
  61. setDate: function setDate(date, num) {
  62. var clone = date.clone();
  63. return clone.date(num);
  64. },
  65. setHour: function setHour(date, hour) {
  66. var clone = date.clone();
  67. return clone.hour(hour);
  68. },
  69. setMinute: function setMinute(date, minute) {
  70. var clone = date.clone();
  71. return clone.minute(minute);
  72. },
  73. setSecond: function setSecond(date, second) {
  74. var clone = date.clone();
  75. return clone.second(second);
  76. },
  77. setMillisecond: function setMillisecond(date, millisecond) {
  78. var clone = date.clone();
  79. return clone.millisecond(millisecond);
  80. },
  81. // Compare
  82. isAfter: function isAfter(date1, date2) {
  83. return date1.isAfter(date2);
  84. },
  85. isValidate: function isValidate(date) {
  86. return date.isValid();
  87. },
  88. locale: {
  89. getWeekFirstDay: function getWeekFirstDay(locale) {
  90. var date = moment().locale(locale);
  91. return date.localeData().firstDayOfWeek();
  92. },
  93. getWeekFirstDate: function getWeekFirstDate(locale, date) {
  94. var clone = date.clone();
  95. var result = clone.locale(locale);
  96. return result.weekday(0);
  97. },
  98. getWeek: function getWeek(locale, date) {
  99. var clone = date.clone();
  100. var result = clone.locale(locale);
  101. return result.week();
  102. },
  103. getShortWeekDays: function getShortWeekDays(locale) {
  104. var date = moment().locale(locale);
  105. return date.localeData().weekdaysMin();
  106. },
  107. getShortMonths: function getShortMonths(locale) {
  108. var date = moment().locale(locale);
  109. return date.localeData().monthsShort();
  110. },
  111. format: function format(locale, date, _format) {
  112. var clone = date.clone();
  113. var result = clone.locale(locale);
  114. return result.format(_format);
  115. },
  116. parse: function parse(locale, text, formats) {
  117. var fallbackFormatList = [];
  118. for (var i = 0; i < formats.length; i += 1) {
  119. var format = formats[i];
  120. var formatText = text;
  121. if (format.includes('wo') || format.includes('Wo')) {
  122. format = format.replace(/wo/g, 'w').replace(/Wo/g, 'W');
  123. var matchFormat = format.match(/[-YyMmDdHhSsWwGg]+/g);
  124. var matchText = formatText.match(/[-\d]+/g);
  125. if (matchFormat && matchText) {
  126. format = matchFormat.join('');
  127. formatText = matchText.join('');
  128. } else {
  129. fallbackFormatList.push(format.replace(/o/g, ''));
  130. }
  131. }
  132. var date = moment(formatText, format, locale, true);
  133. if (date.isValid()) {
  134. return date;
  135. }
  136. }
  137. // Fallback to fuzzy matching, this should always not reach match or need fire a issue
  138. for (var _i = 0; _i < fallbackFormatList.length; _i += 1) {
  139. var _date = moment(text, fallbackFormatList[_i], locale, false);
  140. /* istanbul ignore next */
  141. if (_date.isValid()) {
  142. noteOnce(false, 'Not match any format strictly and fallback to fuzzy match. Please help to fire a issue about this.');
  143. return _date;
  144. }
  145. }
  146. return null;
  147. }
  148. }
  149. };
  150. export default generateConfig;