Как получить названия дней и количество дней в зависимости от месяца и года - PullRequest
0 голосов
/ 11 мая 2018

Я хочу получить названия недель (воскресенье, понедельник, вторник ...) и количество дней в зависимости от месяца и года ...

daysInMonth(month, year) {
  return new Date(year, month, 0).getDate();
}

let dys = this.daysInMonth(this.selected_from.getMonth() + 1, selected_year);

for (let a = 1; a <= dys; a++) {
  console.log(a, 'a')
}

console.log(dys, 'dys');

Используя этот код, я могу узнать количество дней, но как узнать названия недель?

Ответы [ 3 ]

0 голосов
/ 11 мая 2018
function myFunction() {
    var d = new Date();
    var n = d.getDay();
    var day = "";
    switch(n) {
    case 0:
        day = "Sunday";
        break;
    case 1:
        day = "Monday";
        break;
    case 2:
        day = "Tuesday";
        break;
    case 3:
        day = "Wednesday";
        break;
    case 4:
        day = "Thursday";
        break;
    case 5:
        day = "Friday";
        break;
    case 6:
        day = "Saturday";
        break;
    default:
        // do something
        break;
}
    document.getElementById("demo").innerHTML = day;
}

См .: https://www.w3schools.com/jsref/jsref_getday.asp

0 голосов
/ 11 мая 2018

Может быть, что-то вроде этого:

getDayNames(year: number, month: number) {
    var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var daysInMonth = new Date(year, month, 0).getDate();
    for (let i = 1; i <= daysInMonth; i++) {
        var d = new Date(year, month, i);
        var dayName = days[d.getDay()];
        console.log(i + ' ' + dayName);
    }
}

EDIT

Поскольку мотыльки объявлены как 0-11, а не как 1-12, я отредактировал код, чтобы вы могли ввести 1 для января, 2 для февраля и т.д. ...

getDayNames(year: number, month: number) {
    var days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
    var daysInMonth = new Date(year, month, 0).getDate();
    for (let i = 1; i <= daysInMonth; i++) {
        var d = new Date(year, month - 1, i);
        var dayName = days[d.getDay()];
        console.log(i + ' ' + dayName);
    }
 }
0 голосов
/ 11 мая 2018

Используйте moment.js для таких * операций с датой.

Вот как можно получить названия дней по месяцам и годам, используя moment.js

const getDayNames = (month, year) => {
  const daysInMonth = moment(`${month}-01-${year}`, 'MM-DD-YYYY').daysInMonth()
  const names = []

  for (let i = 1; i <= daysInMonth; i++) {
    let date = moment(`${month}-${i}-${year}`, 'MM-DD-YYYY')
    let dayName = date.format('dddd')

    names.push(`${dayName} - ${date.format('MM-DD-YYYY')}`)
  }
  
  return names
}

console.log(getDayNames(5, 2018))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.1/moment.min.js"></script>

* Должны ли мы использовать внешнюю библиотеку?

Как всегда, здесь мы можем дать вам очень обобщенное решение, не зная общей картины (контекста). Это на ваш собственный вес - следует или не следует использовать библиотеку дат. Если ваше приложение использует операции со сложными датами, то лучше использовать его наверняка.

В соответствии с вашим делом (не зная контекста), это противоречиво, следует или не следует. Это не сложный функционал, но лично я предпочитаю использовать его по следующим причинам:

  1. Как вы можете видеть из фрагмента кода, moment.js дает нам названия дней недели , и вы легко можете включить локализацию / интернационализацию для своих пользователей.
  2. Вы работаете с API moment.js, который намного чище и обязательнее, чем Date() API, что снизит риск ошибиться.

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

Например:

  • Вы хотите поддерживать интернационализацию названий дней (переведите название дня в соответствии с языком пользователя).
  • Даты манипуляций (Добавить / Вычесть дни).
  • Форматирование дат.
  • и многие другие случаи (скрытые по первому знаку)

Будьте осторожны и, пожалуйста, не изобретайте колесо, особенно для сложной даты операций! :)

Кредиты:

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