Как получить название месяца из числа в PHP? - PullRequest
13 голосов
/ 07 августа 2011

У меня есть переменная, содержащая номер месяца.Как я могу получить название месяца из этого значения?

Я знаю, что мог бы определить массив для $month_num => $month_name, но я хочу знать, есть ли в PHP функция времени, которая может сделать это без необходимости использования массива?

Ответы [ 5 ]

23 голосов
/ 07 августа 2011
date("F",mktime(0,0,0,$monthnumber,1,2011));
14 голосов
/ 07 августа 2011

Вы можете получить только текстовый месяц метки времени Unix с символом формата F date(), и вы можете превратить практически любой формат даты в Unix отметка времени с strtotime () , поэтому выберите любой год и день с 1 по 28 (так, чтобы он присутствовал во всех 12 месяцах) и выполните:

$written_month = date("F", strtotime("2001-$number_month-1"));

// Example - Note: The year and day are immaterial:
// 'April' == date("F", strtotime("2001-4-1"));

Рабочий пример

Преимущество использования strtotime() в том, что он очень гибкий. Допустим, вам нужен массив текстовых названий месяцев, который начинается через месяц после каждого запуска скрипта;

<?php
for ($number = 1; $number < 13; ++$number) {

    // strtotime() understands the format "+x months"
    $array[] = date("F", strtotime("+$number months"));
}
?>

Рабочий пример

5 голосов
/ 06 июля 2014

Немного более короткая версия принятого ответа:

date('F', strtotime("2000-$monthnumber-01"));
  • F означает «название месяца», согласно таблице на date.

  • 2000 - это просто наполнитель для года, а 01 - наполнитель для дня;поскольку нас не волнует ничего, кроме названия месяца.

Вот демонстрационная версия на ideone.

2 голосов
/ 06 июля 2014

Вы также можете использовать:

jdmonthname(gregoriantojd($monthnumber, 1, 1), CAL_MONTH_GREGORIAN_LONG)

Это просто другой способ.Я ничего не знаю об эффективности этого по сравнению с ответом @ Dreaded точка с запятой .

Вот демо на ideone.

Для справки:

  • jdmonthame возвращает наименование юлианского календарного месяца.

  • gregoriantojd преобразует григорианскую (текущую) календарную дату в юлианскую (часть 1, 1 обозначает день и год).

0 голосов
/ 04 ноября 2016

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

<?php
 $month_number= 3;
 $month_name = date("F", mktime(0, 0, 0, $month_number, 10));
 echo $month_name; 
?>

Выход: Март

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