Ответ 1
Да,
$date = 'July 25 2010';
echo date('d/m/Y', strtotime($date));
m
форматирует месяц к его численному представлению.
Есть ли простой способ изменить $month = "July";
, чтобы $nmonth = 7
(07
тоже было бы неплохо).
Я могу сделать выражение о ситуации, но, безусловно, есть функция для преобразования?
РЕДАКТИРОВАТЬ:
Мне жаль, что я не могу принять несколько ответов, потому что двое из вас в основном дали мне то, что мне было нужно, объединив ваши силы.
$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.
$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));
$monthname = date("F", strtotime($month));
F
означает полное название месяца
$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);
?>
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>
Выше ответ хороший. Вот еще один способ: -
function getMonthNumber($monthStr) {
//e.g, $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;
}
Возможно, используйте комбинацию с strtotime()
и date()
?
Использование
date("F", mktime(0, 0, 0, ($month)));
where, $month value will be 1 -> 12
С 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';
эхо-дата ('Y-m-d', strtotime ($ dt));
эхо-дата ('Y/m/d', strtotime ($ dt));
$month = 'August';
$year = 2019;
echo date('m',strtotime($month.' '.$year));
дает 31
Я знаю, что это может показаться простым решением, но почему бы просто не использовать что-то вроде этого
<select name="month">
<option value="01">January</option>
<option value="02">February</option>
<option selected value="03">March</option>
</select>
Пользователь видит февраль, но 02 отправляется в базу данных