2010-05-31 7 views
7

J'ai une variable avec la valeur suivantenombre de mois Convertir mois nom court

$month = 201002; 

les 4 premiers chiffres représentent l'année, et les 2 derniers chiffres représentent le mois. J'ai besoin d'obtenir les 2 derniers chiffres dans le nom de la chaîne du mois par exemple. Février

Mon code ressemble à ceci

<?php echo date('M',substr($month,4,6)); ?> 

Je puis-je sur le point d'obtenir le nom du mois

+0

double possible de [PHP converti mois numéro à court nom du mois] (http://stackoverflow.com/questions/4612012/php-convert-month -number-to-short-month-name) –

Répondre

15

Append "01" et strtotime sera en mesure d'analyser la chaîne:

echo date('M', strtotime($month . '01')); 
+0

02 représente Février pas Mai – Roland

+0

Bien sûr! Essayez mon code, ça marche. – mexique1

+0

@Roland: 02 = Jan, 03 = Fév, ..., 13 = Dec – r3zn1k

7

Le deuxième paramètre de la date est un horodatage. Utilisez mktime pour en créer un.

$month = 201002; 
$monthNr = substr($month, -2, 2); 

$timestamp = mktime(0, 0, 0, $monthNr, 1); 
$monthName = date('M', $timestamp); 
+0

Il sort 'Dec' pour moi ici http://writecodeonline.com/php/ – Sarfraz

+0

J'ai oublié l'horodateur $ @ $ et maintenant ça marche. – r3zn1k

+0

Le second paramètre de 'substr' est la longueur, pas la position finale. Vous pouvez également chercher à partir de la fin, en utilisant 'substr ($ month, -2, 2)'. –

0
$mydate = "201002"; 
date('M', mktime(0, 0, 0, substr($mydate, 4, 2), 1, 2000)); 
-1

être un programmeur, et même sans rien savoir de la magie de données PHP, je l'avais fait il

$month = intval(substr($input_date,4,2)); 
$mons = explode(" ","Zer Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"); 
echo $mons[$month]; 
+0

Mauvais mois d'août et septembre. :( – salathe

+0

Il devrait être substr ($ strange_date, 4,2), parce que le troisième paramètre est la longueur ... – r3zn1k

+0

merci \t 7 plus à aller –

0

Cela peut vous aider ..

$month = substr($month, -2, 2); 
    echo date('M', strtotime(date('Y-'. $month .'-d'))); 
1

Vous pouvez utiliser la classe DateTime pour obtenir une structure de données Date à l'aide de la chaîne de date et du format. Ensuite, obtenir une chaîne de date avec un format comme celui-ci:

$month = 201002; 
$date = DateTime::createFromFormat('Yd', $month); 
$monthName = $date->format('M'); // will get Month name