У меня есть этот код PHP:
$monthNum = sprintf("%02s", $result["month"]);
$monthName = date("F", strtotime($monthNum));
echo $monthName;
Но это возвращение, December
а не August
.
$result["month"]
равно 8, поэтому sprintf
функция добавляет, 0
чтобы сделать это 08
.
strtotime
не имеет понятия, что вы пытаетесь сделать. В качестве альтернативы просто используйте переключатель для чего-то вроде этого.strtotime
понятия не имеет, что означает «8».strtotime
разбирает полные метки времени, такие как "2012-05-12 08:43:12". Что означает «8» в этом контексте?echo date( "F", time() );
:? Например,echo date( "F", strtotime("2019-03-09") );
будет выводиться «Март»Ответы:
Рекомендуемый способ сделать это:
В настоящее время вы действительно должны использовать объекты DateTime для любой даты / времени. Это требует, чтобы у вас была версия PHP> = 5.2. Как показано в ответе Главича , вы можете использовать следующее:
Символ
!
форматирования используется для сброса всего в эпоху Unix . Символm
формата - это числовое представление месяца с начальными нулями.Альтернативное решение:
Если вы используете более старую версию PHP и не можете обновить ее в данный момент, вы можете воспользоваться этим решением. Второй параметр
date()
функции принимает временную метку, и вы можете использовать ееmktime()
для создания, например, так:Если вы хотите, чтобы трехбуквенное название месяца было похоже
Mar
, изменитеF
наM
. Список всех доступных параметров форматирования можно найти в документации по PHP .источник
Просто потому, что все используют функции strtotime () и date (), я покажу пример DateTime :
источник
DateTime::createFromFormat('m|', $result['month']);
для сброса только те поля, которые отсутствуют.strftime()
для этого.Используйте
mktime()
:Смотрите руководство по PHP: http://php.net/mktime
источник
"m"
он вернет месяц в виде двухзначного числа в видеstring
. например, январь = 01, февраль = 02strtotime
ожидает стандартный формат даты и передает обратно метку времени.Похоже, вы передаете
strtotime
одну цифру для вывода формата даты.Вы должны использовать тот,
mktime
который принимает элементы даты в качестве параметров.Ваш полный код:
Однако функция mktime не требует нуля в начале номера месяца, поэтому первая строка совершенно не нужна и
$result["month"]
может быть передана непосредственно в функцию.Затем все это можно объединить в одну строку, повторяя встроенную дату.
Ваш реорганизованный код:
...
источник
date("F", mktime(null, null, null, 2));
возвращаетсяMarch
вместоFebruary
.mktime
будет использоваться текущий день. Сегодня 31-е. Что такое 31 февраля? :)1
не предоставляется как 5-й параметр для,mktime
но как 3-й параметр, кdate
которому не приведет ожидаемый результатЧтобы выполнить преобразование в отношении текущей локали, вы можете использовать
strftime
функцию:date
не уважает язык,strftime
делает.источник
$monthName = utf8_encode(strftime('%B', mktime(0, 0, 0, $monthNumber)));
для отображения акцентированных символов, как в 'Août'Если вы просто хотите получить массив названий месяцев от начала года до конца, например, чтобы заполнить выпадающий список, я бы просто использовал следующее;
источник
Есть много способов напечатать месяц с заданного номера. Выберите один люкс для вас.
1. функция date () вместе с параметром 'F'
Пример кода:
2. Создавая объект php date с помощью createFromFormat ()
Пример кода
3. функция strtotime ()
4. функция mktime ()
5. Используя jdmonthname ()
источник
адаптироваться по мере необходимости
источник
Если у вас есть номер месяца, вы можете сначала создать из него дату с датой по умолчанию 1-й и годом по умолчанию текущего года, а затем извлечь имя месяца из созданной даты:
Этот код предполагает, что ваш месяц хранится в $ i
Надеюсь, это поможет кому-то
источник
Я нашел это на https://css-tricks.com/snippets/php/change-month-number-to-month-name/, и он работал отлично.
источник
это тривиально легко, почему так много людей делают такие плохие предложения? @ Бора был ближайшим, но это самый надежный
это способ сделать это
источник
В настоящее время использую решение ниже для решения той же проблемы:
Чтобы узнать больше о настройке локали, перейдите по ссылке http://php.net/manual/en/function.setlocale.php
Чтобы узнать больше о strftime, зайдите на http://php.net/manual/en/function.strftime.php
Ucfirst()
используется для заглавных букв первой буквы в строке.источник
источник
Вам нужно установить поля с
strtotime
илиmktime
С
mktime
сет только месяц. Попробуй это:источник
используйте приведенный выше код
источник
Это для всех нужд преобразования даты и времени
источник
источник
Я думаю, что использование cal_info () - это самый простой способ преобразовать число в строку.
Смотрите документы для cal_info ()
источник
Использование:
источник
gregoriantojd
иjdmonthname
находятся в расширении календаря и требуют компиляции PHP,--enable-calendar
если вы не в Windows.Я знаю, что этот вопрос задавали некоторое время назад, но я подумал, что все, кто ищет этот ответ, вероятно, просто пытались избежать выписывания целых операторов if / else, поэтому я написал их для вас, чтобы вы могли копировать / вставлять. Единственное предостережение, связанное с этой функцией, заключается в том, что она соответствует фактическому номеру месяца, а не индексируемому 0, поэтому январь = 1, а не 0.
источник
Чтобы получить название месяца, указав номер месяца
Где «F» вернет вам название месяца, например. 'Май'
источник
Вот как я это сделал
возвращается
30 June 2019
источник
Простыми хитростями здесь вы можете использовать функцию strtotime (), работающую в соответствии с вашими потребностями, конвертировать число в название месяца.
1. Если вы хотите получить результат в январе, феврале и марте, то попробуйте ниже одного с «М» в качестве параметра внутри даты.
Выход: май
/ 2. Вы можете попробовать с «F» вместо «M», чтобы получить полное название месяца в качестве вывода январь февраль март и т. Д.
Выход: январь
источник
Это извлекает месяцы.
источник
Используйте встроенную функцию, такую как
jdmonthname()
:источник
jdmonthname(3, CAL_MONTH_GREGORIAN_LONG);
возвращаетсяNovember
Вы можете просто использовать функцию monthname () в SQL.
ВЫБЕРИТЕ имя месяца (date_column) из группы таблиц по названию месяца (date_column)
источник