конвертировать месяц из имени в число - PullRequest
46 голосов
/ 19 июля 2010

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

Ответы [ 16 ]

70 голосов
/ 19 июля 2010

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

<?php
  $date = date_parse('July');
  var_dump($date['month']);
?>
62 голосов
/ 19 июля 2010

Да,

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

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

18 голосов
/ 30 марта 2012

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

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

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

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

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

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

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

11 голосов
/ 20 августа 2013
$string = "July";
echo $month_number = date("n",strtotime($string));

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

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

Для других форматов укажите это ..
http://php.net/manual/en/function.date.php

5 голосов
/ 13 сентября 2012

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

$month = $monthname = date("M", strtotime($month));
4 голосов
/ 31 марта 2012
$monthname = date("F", strtotime($month));

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

3 голосов
/ 19 июля 2010
$nmonth = date("m", strtotime($month));
2 голосов
/ 11 сентября 2014

Над ответом хорошо. Вот еще один способ сделать: -

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;
}
2 голосов
/ 20 декабря 2012
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>
2 голосов
/ 19 июля 2010

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

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

Пример:

<?
$month = 7;

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

echo date("m",$tempDate);


?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...