Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting

Как по названию месяца получить его порядковый номер?

Всем привет!
1. Получено:
$dateItemPage // == один из месяца словом (ноябрь, декабрь итп...)
.
2. Необходимо 'слово' (например: ноябрь) перегнать в цифру соответствующую этому месяцу (например: ноябрь > 11)

Я с этим впервые сталкиваюсь, да и с датами и временем вообще мало работал, поэтому ни чего умнее проверки по if(dateItemPage == 'ноябрь') = 11 не придумал. Может есть какие-то более 'серьезные' варианты исполнения данной задачи?
Заранее спасибо!
  • Вопрос задан
  • 430 просмотров
Решения вопроса 3
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
$monthName = $_GET['month_name'];
$months = [1 => 'Январь', ..., 12 => 'Декабрь'];
$monthsByName = array_change_key_case(array_flip($month), CASE_LOWER);
$monthIndex = $monthsByName[mb_strtolower($monthName)];

Серьёзнее уже некуда (хотя, всегда можно ФабрикуСтратегийСинглтонов прикрутить, если не понимать, зачем нужны паттерны :).
Ну и, конечно, регулярные выражения тут ни при чём совершенно.

P.S. Чисто с академической точки зрения, эту задачу можно решить методами работы с датой, но это решение кривое, сложное и неустойчивое, поэтому я его даже не стану высасывать из пальца.
Ответ написан
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
$months = ['янв', 'фев', 'мар', 'апр', 'май', 'июн', 
           'июл', 'авг', 'сен', 'окт', 'ноя', 'дек'];
$monthNumber = array_search(mb_strtolower(mb_substr($monthName, 0, 3)), $months);
Ответ написан
Mike_Ro
@Mike_Ro Автор вопроса
Python, JS, WordPress, SEO, Bots, Adversting
Вариант из предложенных вызывал ошибку, не нравились ему [] скобки.
Попробовал такой вариант:
$monthsLibrary  = array('', 'января', 'февраля', 'марта',  'апреля', 'мая', 'июня', 'июля',  'августа', 'сентября', 'октября', 'ноября', 'декабря');
$mountsSearch = array_search($mount, $monthsLibrary);

Вроде короче и работает! =)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы