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 Perl Discussion :

découper un datetime avec la fonction split


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut découper un datetime avec la fonction split
    Bonjour,

    J'essaye de traiter une date sous cette forme "jj/mm/aaaa hh:mm:ss"
    pour pouvoir l'insérer dans une base de données au format DATETIME qui doit être sous cette forme: "aaaa/mm/jj hh:mm:ss"

    Je souhaite découper dans un premier temps le date time en deux pour faire un tableau qui contiendrait tab[0]=jj/mm/aaaa et tab[1]=hh:mm:ss
    je n'arrive pas à effectuer ce premier découpage, j'ai essayer avec
    @start=~ split(/\//, $start);

    Si quelqu'un peut m'aider un peu, merci d'avance.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    on comprends rien à ce que tu racontes, donne nous un exemple de ce que tu veux faire.
    Si tu veux obtenir la date sous un certain format, voici une procédure :
    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
     
    #!/usr/bin/perl -w
     
    use strict;
    use Carp;
     
    print &date(),"\n";
     
    #Retourne la date.
    sub date {
      my @tab_date =localtime(time); 
      my $jour = $tab_date[3];
      $jour = "0".$jour if ($jour<10);
      my $mois = ($tab_date[4]+1);
      $mois = "0".$mois if ($mois<10);
      my $annee =  ($tab_date[5]+1900);
      my $heure = $tab_date[2];
      $heure = "0".$heure if ($heure<10);
      my $minute = $tab_date[1];
      $minute = "0".$minute if ($minute<10);
       my $sec= $tab_date[0];
      $sec = "0".$sec if ($sec<10);
     
    return "$jour/$mois/$annee $tab_date[2]h:$minute"."min".":$sec"."sec";	
    }

  3. #3
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    le code suivant devrait faire aussi l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $datestr = "jj/mm/aaaa hh:mm:ss";
     
    ($date, $heure) = split (/ /, $datestr);
     
    ($jj, $mm,$aaaa) = split(/\//, $date);
    ($hh, $mn,$ss) = split(/:/, $heure);
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    J'ai relu mon message je pensais pourtant être explicite, désolé.
    Je souhaite transformer cette chaîne que je récupere avec mon parser XML: "jj/mm/aaaa hh:mm:ss" comme ceci:
    "aaaa/mm/jj hh:mm:ss"
    c'est à dire changer l'ordre de la date pour pouvoir l'insérer dans une base de données.

    merci pour ton aide.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 43
    Points : 26
    Points
    26
    Par défaut
    Merci rcageot, c'est exactement ce que je voulais faire!

  6. #6
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par moook
    J'ai relu mon message je pensais pourtant être explicite, désolé.
    Je souhaite transformer cette chaîne que je récupere avec mon parser XML: "jj/mm/aaaa hh:mm:ss" comme ceci:
    "aaaa/mm/jj hh:mm:ss"
    c'est à dire changer l'ordre de la date pour pouvoir l'insérer dans une base de données.

    merci pour ton aide.
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my ($jj, $mm, $aaaa, $hh, $mn, $ss) = split (%/| |:%, $chaine);
    my $new_ch=sprintf ("%04d/%02d/%02d %02d:%02d:%02d", $jj, $mm, $aaaa, $hh, $mn, $ss);
    Non ?

    [Edit] Arf ... grillé ... à vouloir faire trop de choses à la fois ... [/Edit]
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

  7. #7
    Membre habitué Avatar de rcageot
    Profil pro
    rien
    Inscrit en
    Septembre 2006
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : rien

    Informations forums :
    Inscription : Septembre 2006
    Messages : 128
    Points : 170
    Points
    170
    Par défaut
    j'aime mieux ta solution utilisant un seul split mais j'ai lu dans un autre post (une réponse de jedai il me semble) qu'il fallait mieux décomposer pour faciliter la lecture du code !

    sinon désolé pour le grillage
    Si un ricard vaut un steak, j'ai bien bouffé une vache hier soir !
    L'art de poser les bonnes questions dans les forums afin de ne pas passer pour un

  8. #8
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par rcageot
    j'aime mieux ta solution utilisant un seul split mais j'ai lu dans un autre post (une réponse de jedai il me semble) qu'il fallait mieux décomposer pour faciliter la lecture du code !
    Je préfère aussi décomposer lorsqu'il s'agit de substitutions (s///). Pour le split, cela ne me gêne pas trop car l'expression reste généralement courte et lisible.

    Pour ce qui est de la lisibilité du code, une bonne précaution est de commenter les expressions rationnelles vraiment tordues afin que, si elle ne sont pas facilement lisible, on puisse quand même comprendre ce qu'elles font.

    Citation Envoyé par rcageot
    sinon désolé pour le grillage
    Il n'y a pas de mal ... poster sur 4 ou 5 fils en parallèle, c'est risquer de se faire griller sur tous.
    La FAQ Perl est par ici
    : La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/12/2013, 19h03
  2. problème avec la fonction split(":")
    Par polo42 dans le forum Général Python
    Réponses: 2
    Dernier message: 15/08/2007, 16h13
  3. [VB6]Problème avec la Fonction Split
    Par Goupo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 07/06/2007, 19h23
  4. Leger probleme avec la fonction split
    Par gbouchat dans le forum ASP
    Réponses: 1
    Dernier message: 31/05/2007, 19h56
  5. [Tableaux] problème avec la fonction split()
    Par Marcus15 dans le forum Langage
    Réponses: 3
    Dernier message: 26/02/2007, 11h17

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