Как получить дату определенного дня в JavaScript? - PullRequest
0 голосов
/ 23 июня 2019

У меня есть пример с другим числом дней (1 = понедельник, 2 = вторник .......), и мне нужно вернуть дату o этого дня в текущей неделе

Например:если я отправлю номер 3 для своей функции, на этой текущей неделе сегодня воскресенье 23, и мне нужно, чтобы моя функция дала мне дату 3-го дня этой недели, в этом случае днем ​​среды было 19 июня.В другом примере я передаю число 5 своей функции, функция возвращает мне дату 5-го дня этой недели (пятница) = 21 июня (2019/06/21)

что-то в этом роде

let currentDate = new Date().toISOString().slice(0, 10)

1 Ответ

1 голос
/ 24 июня 2019

Стратегия довольно проста:

  1. new Date() возвращает текущую дату
  2. Метод getDay возвращает номер дня дня недели недели
  3. Метод getDate возвращает номер дня дня дня месяца
  4. Метод setDate устанавливает номер дня дня месяца месяца

Таким образом, вы получаете текущую дату, вычитаете номер текущего дня, затем добавляете желаемый номер дня к дате. Это также перенесет на предыдущие и последующие месяцы, например,

/* Given a week day number, return the date for that
 * day in the current week.
 *
 * @param {number} dayNumber - number of day in week.
 *   If 0, returns Sunday at start of week
 *   If 7, returns Sunday at end of week
 *   Otherwise 1 Mon, 2 Tue, etc.
 *   If not an integer in range 0 to 7 returns undefined
 * @returns {number|undefined} date of supplied day number
 */
function getDateForDayInWeek(dayNumber) {
  dayNumber = Number(dayNumber);
  // Validate input
  if (dayNumber < 0 ||
      dayNumber > 7 ||
      parseInt(dayNumber) != dayNumber) {
    return; // undefined
  }
  let d = new Date();
  d.setDate(d.getDate() - d.getDay() + dayNumber);
  return d.getDate();
}

// Examples
console.log('Today is ' + 
  new Date().toLocaleString(undefined, {
    month:'long', weekday:'long', day:'numeric'
  })
);
// Sample values
[0,  // Sunday at start of week 
 3,  // Wednesday
 7,  // Sunday end of week
 23, -2, 2.4 // All invalid, return undefined
].forEach(
  n => console.log(n + ':' + getDateForDayInWeek(n))
);

Возможно, вы захотите, чтобы функция возвращала дату, тогда вы можете делать с ней больше, включая просто получение даты, а также названия месяца и дня и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...