конвертировать месяц с даты на номер

Есть ли простой способ изменить $month = "July"; так что $nmonth = 7 ( 07 тоже будет хорошо). Я могу сделать заявление о ситуации, но, безусловно, есть функция для преобразования? EDIT: Мне жаль, что я не мог принять несколько ответов, потому что двое из вас в основном дали мне то, что мне было нужно по вашим силам вместе.

 $nmonth = date('m',strtotime($month)); 

Это даст числовое значение за $month . Благодаря!

Да,

 $date = 'July 25 2010'; echo date('d/m/Y', strtotime($date)); 

Формат m форматирует месяц до его численного представления.

Попробуй это:

 <?php $date = date_parse('July'); var_dump($date['month']); ?> 

Интересный взгляд здесь, код, данный Келли хорошо работает,

 $nmonth = date("m", strtotime($month)); 

но в течение месяца февраля он не будет работать, как ожидалось, когда текущий день составляет 30 или 31 в високосный год и 29,30,31 в течение не-високосного года. Он вернет 3 в качестве номера месяца. Пример:

 $nmonth = date("m", strtotime("february")); 

Решение: добавьте год с таким месяцем:

 $nmonth = date("m", strtotime("february-2012")); 

Я получил это из этого комментария в php manual.

 $string = "July"; echo $month_number = date("n",strtotime($string)); 

возвращает «7» [номер месяца]

Использовать date("m",strtotime($string)); для выхода «08»

Для большего количества форматов reffer this ..
http://php.net/manual/en/function.date.php

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

 $month = $monthname = date("M", strtotime($month)); 
 $nmonth = date("m", strtotime($month)); 

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

Отличная ссылка здесь: http://php.net/manual/en/function.date.php

Пример:

 <? $month = 7; $tempDate = mktime(0, 0, 0, $month, 1, 1900); echo date("m",$tempDate); ?> 
 $monthname = date("F", strtotime($month)); 

F означает полное название месяца

Может быть, использовать комбинацию с strtotime() и date() ?

 <?php $monthNum = 5; $monthName = date("F", mktime(0, 0, 0, $monthNum, 10)); echo $monthName; //output: May ?> 

использование

 date("F", mktime(0, 0, 0, ($month))); where, $month value will be 1 -> 12 

Выше ответ хороший. Вот еще один способ:

 function getMonthNumber($monthStr) { //eg, $month='Jan' or 'January' or 'JAN' or 'JANUARY' or 'january' or 'jan' $m = ucfirst(strtolower(trim($monthStr))); switch ($m) { case "January": case "Jan": $m = "01"; break; case "Febuary": case "Feb": $m = "02"; break; case "March": case "Mar": $m = "03"; break; case "April": case "Apr": $m = "04"; break; case "May": $m = "05"; break; case "June": case "Jun": $m = "06"; break; case "July": case "Jul": $m = "07"; break; case "August": case "Aug": $m = "08"; break; case "September": case "Sep": $m = "09"; break; case "October": case "Oct": $m = "10"; break; case "November": case "Nov": $m = "11"; break; case "December": case "Dec": $m = "12"; break; default: $m = false; break; } return $m; } 

С помощью PHP 5.4 вы можете включить ответ Мэтью в однострочный:

 $date = sprintf('%d-%d-01', $year, date_parse('may')['month']); 
 $date = 'Dec 25 2099'; echo date('d/m/Y', strtotime($date)); 

Это возвращает 01/01/1970 , что означает, что php не поддерживает все даты, он возвращает правильную форматированную дату до Jan 19 2038 но Jan 20 2038 возвращается 01/01/1970

 $dt = '2017-Jan-10'; OR $dt = '2017-January-10'; 

echo date ('Ym-d', strtotime ($ dt));

echo date ('Y / m / d', strtotime ($ dt));

Я знаю, что это может показаться простым решением, но почему бы просто не использовать что-то вроде этого

 <select name="month"> <option value="01">January</option> <option value="02">February</option> <option selected value="03">March</option> </select> 

Пользователь видит февраль, но 02 отправляется в базу данных