Подтвердить что ты не робот

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

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

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

Это даст числовое значение для $month. Спасибо!

4b9b3361

Ответ 1

Да,

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

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

Ответ 2

Попробуйте следующее:

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

$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

Ответ 5

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

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

Ответ 6

$monthname = date("F", strtotime($month));

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

Ответ 7

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

Ответ 8

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

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

Пример:

<?
$month = 7;

$tempDate = mktime(0, 0, 0, $month, 1, 1900); 

echo date("m",$tempDate);


?>

Ответ 9

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

Ответ 10

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

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;
}

Ответ 11

Возможно, используйте комбинацию с strtotime() и date()?

Ответ 12

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

date("F", mktime(0, 0, 0, ($month)));

where, $month value will be 1 -> 12

Ответ 13

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

$date = sprintf('%d-%d-01', $year, date_parse('may')['month']);

Ответ 14

$date = 'Dec 25 2099';
echo date('d/m/Y', strtotime($date));

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

Ответ 15

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

эхо-дата ('Y-m-d', strtotime ($ dt));

эхо-дата ('Y/m/d', strtotime ($ dt));

Ответ 16

$month = 'August';
$year = 2019;
echo date('m',strtotime($month.' '.$year));

дает 31

Ответ 17

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

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

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