Bonjour,

Je cherche à convertir une date de format jj-MMM-aa (mois en 3 lettres) au format jj-mm-aa (mois en chiffres). Ce code n'est pas du tout optimisé, il y a des vérifs de partout, je cherche d'abord à le dégrossir.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
 
$date_pmv = '25-NOV-09';
if (preg_match( '`^\d{1,2}-[A-Z]{3}-\d{1,2}$`' , $date_pmv )) { // si au format jj-MMM-aa avec le mois en 3 lettres
	echo "Date : $date_pmv<br>";
	$date = explode ("-", $date_pmv);
	$jour = $date[0];
	$mois = $date[1];
	$an = $date[2];
	echo "jour = $jour-$mois-$an<br>";
 
	$mois_dispo = array("JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC");
 
	if (in_array($mois, $mois_dispo)) {
		echo "mois $mois est dans tab : position n°";
		switch ($mois) {
			case 'JAN' :
				$mois_num = '01';
				echo "$mois_num";
				break;
			case 'FEB' :
				$mois_num = '02';
				echo "$mois_num";
				break;
			case 'MAR' :
				$mois_num = '03';
				echo "$mois_num";
				break;
			case 'APR' :
				$mois_num = '04';
				echo "$mois_num";
				break;
			case 'MAY' :
				$mois_num = '05';
				echo "$mois_num";
				break;
			case 'JUN' :
				$mois_num = '06';
				echo "$mois_num";
				break;
			case 'JUL' :
				$mois_num = '07';
				echo "$mois_num";
				break;
			case 'AUG' :
				$mois_num = '08';
				echo "$mois_num";
				break;
			case 'SEP' :
				$mois_num = '09';
				echo "$mois_num";
				break;
			case 'OCT' :
				$mois_num = '10';
				echo "$mois_num";
				break;
			case 'NOV' :
				$mois_num = '11';
				echo "$mois_num";
				break;
			case 'DEC' :
				$mois_num = '12';
				echo "$mois_num";
				break;
			default :
				echo "pas converti";
				break;
		}
		$nouvelle_date = "$jour-$mois_num-$an";
		echo "<br>".$nouvelle_date;
 
	} else echo "mois pas dans tab<br>";
 
} else "regexp KO";
Je voudrais savoir si on peut faire plus simple ou plus court, notamment pour éviter l'in_array() et le switch() : par exemple avec une fonction qui vérifierait les 3 lettres avec une possibilité de date(M), si NOV peut être un date(M) avec on renvoie son équivalent date(m). C'est possible ça ? Je ne vois pas trop comment faire...

Merci pour votre aide !