calCurrentWeekDate.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // 根据参数日期获取具体日期信息
  2. const formatDate = (date = new Date()) => {
  3. let year = date.getFullYear();
  4. let month = (date.getMonth() + 1);
  5. let day = date.getDate();
  6. let week = ['天', '一', '二', '三', '四', '五', '六'][date.getDay()];
  7. const dateInfo = {
  8. date: new Date(date),
  9. dateStr: `${year}-${month.toString().padStart(2,'0')}-${day.toString().padStart(2,'0')}`,
  10. year,
  11. month,
  12. day,
  13. week,
  14. isToday: false
  15. }
  16. const today = new Date();
  17. // 判断是否为当天
  18. if (today.getFullYear() === year && (today.getMonth() + 1) === month && today.getDate() === day) {
  19. dateInfo['isToday'] = true;
  20. }
  21. return dateInfo;
  22. };
  23. // 根据基准日期,获取长度为dayLenth的日期数组
  24. const setDate = (date = new Date(), step = 7) => {
  25. let weekData = [];
  26. const week = date.getDay() - 1;
  27. date = getDateByDate(date, week * -1);
  28. for (let i = 0; i < step; i++) {
  29. weekData.push(formatDate(i == 0 ? date : getDateByDate(date, 1)))
  30. }
  31. return weekData;
  32. };
  33. // 根据基准日期获取前后某天的日期对象
  34. const getDateByDate = (date = new Date(), range = 0) => {
  35. date.setDate(date.getDate() + range);
  36. return date;
  37. };
  38. /*
  39. 获取以baselineDate所在周的一周、前一周、下一周的日期和星期信息(切换周期也可通过参数dayLenth自行设置)
  40. baselineDate: 设置的基准日期(返回的日期列表的第一个日期)
  41. range: 以 baselineDate 为基准日期的前后天数范围(如基准日期的range为0,需要返回前7天日期,则range为-7,后7天则range为7)
  42. step: 需要获取的日期信息周期天数,默认获取baselineDate所在周的一周日期信息
  43. */
  44. export const getWeekDate = (
  45. baselineDate = new Date(),
  46. range = 0,
  47. step = 7
  48. ) => {
  49. return setDate(getDateByDate(baselineDate, range), step);
  50. };