Как форматировать даты с суффиксами порядковых номеров (-st, -nd, -rd, -th) в JavaScript

Многие онлайн-ресурсы научат форматировать даты. Но трудно найти то, что объясняет, как форматировать даты с помощью суффикса порядкового числа (например, 1ул) в JavaScript – без использования библиотеки.

В этой краткой статье вы узнаете, как форматировать даты JavaScript с порядковыми номерами. Все порядковые числительные используют суффикс. Суффиксы «-st» (как для 1-го), «-nd» (как для 2-го), «-rd» (как для 3-го) или «-th» (как для 4-го). Их используют для свиданий и когда нужно что-то заказать. Вместо 15 у вас будет 15, например.

Для дат это также удобный способ представления даты на веб-странице, и вас могут попросить отформатировать дату с помощью порядковых номеров, например 15 мая 2022 вместо 15 мая 2022 года.

Как форматировать даты в JavaScript

Существует множество способов форматирования дат в JavaScript. Но для этого вам нужен день, месяц и год, предназначенные разным переменным, чтобы вы могли объединить их в желаемом порядке:

const dateObj = new Date();
const day = dateObj.getDate();
const month = dateObj.toLocaleString("default", { month: "long" });
const year = dateObj.getFullYear();

const date = `${month} ${day}, ${year}`;
console.log(date); // "December 23, 2022"

Примечание: Вы можете узнать больше о том, как форматировать даты в этой статье и об этом однострочном методе.

Как форматировать даты с суффиксами порядковых номеров (-st, -nd, -rd и -th) в JavaScript

Теперь у вас есть дата, но вы хотите, чтобы день был отформатирован как порядковый номер, то есть 23 должно быть, например, 23-м.

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

const nthNumber = (number) => {
  if (number > 3 && number < 21) return "th";
  switch (number % 10) {
    case 1:
      return "st";
    case 2:
      return "nd";
    case 3:
      return "rd";
    default:
      return "th";
  }
};

Этот метод проверяет каждую группу чисел и возвращает соответствующий суффикс. К примеру, от 4 до 20 он будет иметь порядковый суффикс «th». Тогда операторы switch case проверяют надлежащим образом другие группы чисел и возвращают соответствующий суффикс порядкового числа.

Теперь вы можете обновить настройки даты, чтобы добавить nthNumber() функцию и передайте номер дня:

const date = `${month} ${day}${nthNumber(day)}, ${year}`;
console.log(date); // "December 23rd, 2022"

Вот так выглядит весь код:

const dateObj = new Date();
const day = dateObj.getDate();
const month = dateObj.toLocaleString("default", { month: "long" });
const year = dateObj.getFullYear();

const nthNumber = (number) => {
  if (number > 3 && number < 21) return "th";
  switch (number % 10) {
    case 1:
      return "st";
    case 2:
      return "nd";
    case 3:
      return "rd";
    default:
      return "th";
  }
};

const date = `${month} ${day}${nthNumber(day)}, ${year}`;
console.log(date); // "December 23rd, 2022"

Подведению

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

const nthNumber = (number) => {
  return number > 0
    ? ["th", "st", "nd", "rd"][
        (number > 3 && number < 21) || number % 10 > 3 ? 0 : number % 10
      ]
    : "";
};

Не стесняйтесь настроить функцию, чтобы получить желаемый результат, и получайте удовольствие от кодировки!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *