web-dev-qa-db-fra.com

convertir le mois de nom en numéro

Existe-t-il un moyen simple de changer $month = "July"; pour que $nmonth = 7 (07 convienne également) . Je pourrais faire une déclaration, mais il existe sûrement une fonction à convertir? pourrait accepter des réponses multiples, parce que deux d'entre vous m'ont essentiellement donné ce dont j'avais besoin par vos pouvoirs combinés.

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

Cela donnera la valeur numérique pour $month. Merci!

42
aslum

Oui,

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

La m formate le mois en sa représentation numérique.

62
Sarfraz

Essaye ça:

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

Un regard intéressant ici, le code donné par Kelly fonctionne bien, 

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

mais pour le mois de février, cela ne fonctionnera pas comme prévu si le jour actuel est 30 ou 31 l'année bissextile et 29,30,31 l'année non bissextile.Il retournera 3 comme numéro de mois. Ex: 

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

La solution est d'ajouter l'année avec le mois comme ceci: 

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

Je l'ai eu de ce commentaire dans le manuel php.

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

renvoie '7' [numéro du mois]

Utilisez date("m",strtotime($string)); pour la sortie "08" 

Pour plus de formats, notez ceci ..
http://php.net/manual/en/function.date.php

10
Vineesh Kalarickal

vous pouvez aussi utiliser celui-ci:

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

F signifie nom du mois complet

4
Ranjith Siji
$nmonth = date("m", strtotime($month));
3
Kelly Copley

Il peut être plus simple de créer une fausse date pour pouvoir utiliser la fonction de date.

Excellente référence ici: http://php.net/manual/en/function.date.php

Exemple:

<?
$month = 7;

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

echo date("m",$tempDate);


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

Utilisation

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

where, $month value will be 1 -> 12
1
PHP Ferrari

Utilisez peut-être une combinaison avec strtotime() et date() ?

1
robertbasic

La réponse ci-dessus est bonne. Voici une autre façon de faire: -

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

Avec PHP 5.4, vous pouvez transformer la réponse de Matthew en une ligne:

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

Ceci retourne 01/01/1970, ce qui signifie que php ne supporte pas toutes les dates, il retourne la date formatée correcte jusqu'au Jan 19 2038 mais Jan 20 2038 renvoie 01/01/1970

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

écho date ('Y-m-d', strtotime ($ dt));

écho date ('Y/m/j', strtotime ($ dt));

0
Mohammad