IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Optimisation de fonction : conversion de date


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut Optimisation de fonction : conversion de date
    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 !

  2. #2
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    strtotime()

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo date('d-m-Y', strtotime("25-NOV-09"));

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 719
    Points
    1 719
    Par défaut
    Super merci, c'est exactement ce que je cherchais

    Je me suis bien compliqué la vie quand même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.5] (Optimisation) Retourner le dernier prix d'un produit en fonction de la date
    Par Petit-Bonhomme dans le forum Requêtes
    Réponses: 18
    Dernier message: 05/08/2013, 16h16
  2. [DOM4J] [XPATH] fonction de conversion xs:date()
    Par laurent_m dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 26/09/2008, 10h51
  3. Fonction de conversion de date
    Par Cyborg289 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 11/04/2006, 14h20
  4. Conversion de date lors d'un import
    Par bilbon.S dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 26/03/2004, 14h33
  5. Conversion de date et division 64 bits
    Par dway dans le forum Assembleur
    Réponses: 38
    Dernier message: 27/01/2004, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo