Есть ли простой способ изменить $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 отправляется в базу данных