formatWeeks.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //项目所需以每周五为周第一天 周四结束 可在createYear 方法中修改
  2. let dayTime = 1000 * 60 * 60 * 24;
  3. export const createYear = (year) => {
  4. let arr = [];
  5. let yearStart = new Date(`${year}-01-01`);
  6. let yearEnd = new Date(`${year}-12-31`);
  7. let startTime;
  8. if (yearStart.getDay() < 5) {
  9. startTime = yearStart.getTime() + (5 - yearStart.getDay()) * dayTime;
  10. } else if (yearStart.getDay() > 5) {
  11. startTime = yearStart.getTime() + 6 * dayTime;
  12. } else {
  13. startTime = yearStart.getTime();
  14. }
  15. let endTime = yearEnd.getDay() < 4 ? yearEnd.getTime() + (4 - yearEnd.getDay()) * dayTime : yearEnd
  16. .getTime();
  17. formatWeek(startTime, endTime, arr, 0);
  18. return arr
  19. }
  20. function formatWeek(start, end, weeks, index) {
  21. let currentTimes = new Date().getTime();
  22. weeks.push({
  23. week: index + 1,
  24. value: `${formatDate(start)}至${formatDate(start + 6 * dayTime)}`,
  25. weekValue: `第${index+1}周`,
  26. start: formatDate(start),
  27. end: formatDate(start + 6 * dayTime)
  28. })
  29. if (start + 6 * dayTime < currentTimes && start + 6 * dayTime < end) {
  30. formatWeek(start + 7 * dayTime, end, weeks, index + 1)
  31. }
  32. }
  33. function formatDate(timer) {
  34. let times = new Date(timer);
  35. let [y, m, d] = [times.getFullYear(), times.getMonth() + 1, times.getDate()];
  36. return `${y}-${m<10?'0'+m:m}-${d<10?'0'+d:d}`
  37. }