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!
Oui,
$date = 'July 25 2010';
echo date('d/m/Y', strtotime($date));
La m
formate le mois en sa représentation numérique.
Essaye ça:
<?php
$date = date_parse('July');
var_dump($date['month']);
?>
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.
$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
vous pouvez aussi utiliser celui-ci:
$month = $monthname = date("M", strtotime($month));
$monthname = date("F", strtotime($month));
F
signifie nom du mois complet
$nmonth = date("m", strtotime($month));
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);
?>
<?php
$monthNum = 5;
$monthName = date("F", mktime(0, 0, 0, $monthNum, 10));
echo $monthName; //output: May
?>
Utilisation
date("F", mktime(0, 0, 0, ($month)));
where, $month value will be 1 -> 12
Utilisez peut-être une combinaison avec strtotime()
et date()
?
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;
}
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']);
$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
$dt = '2017-Jan-10';
OR
$dt = '2017-January-10';
écho date ('Y-m-d', strtotime ($ dt));
écho date ('Y/m/j', strtotime ($ dt));