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 :

PB Utilisation fonction date_to_text_Long


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut PB Utilisation fonction date_to_text_Long
    Bonjour à tous,

    J'essaye désespérément d'utiliser la fonction date_to_text_Long du module Date::Caclc en Perl.
    Elle a pour effet de convertir une date au format texte.
    Ex : 2010-07-29 devient "Jeudi 29 Juillet 2010"

    Il est écrit dans la doc CPAN qu'elle s'utilise ainsi :
    $string = Date_to_Text_Long($year,$month,$day[,$lang]);

    Où la variable $lang est un chiffre de 1 à 14 désignant le langage souhaité (en l'occurence 2 pour le français).

    Mon problème c'est qu'en pratique, la fonction date_to_text_Long ne semble pas apprécier ce 4ème paramètre.
    Message d'erreur à la compil : "Usage: Date::Calc::Date_to_Text_Long(year, month, day)"

    Alors est ce moi qui m'y prends mal ou bien existe t'il une subtilité pour obtenir ma date en français ?

    En vous remerciant.

    Edrimor

  2. #2
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonjour,

    Pour m'en rendre compte j'ai fait un premier script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/perl -w
     
    use strict;
    use Date::Calc;
     
    my $year = 2010;
    my $month = 7;
    my $day = 29;
    my $language = 2;
     
    my $string = Date::Calc->Date_to_Text_Long($year,$month,$day,$language);
    print $string."\n";
    qui me donne bien la même erreur que toi.

    J'ai alors tené une deuxième version en chargeant la fonction directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/usr/bin/perl -w
     
    use strict;
    use Date::Calc qw(Date_to_Text_Long);
     
    my $year = 2010;
    my $month = 7;
    my $day = 29;
    my $language = 2;
     
    my $string = Date_to_Text_Long($year,$month,$day,$language);
    print $string."\n";
    Et là miracle ca a marché ...

    Alors bon je n'ai pas encore vraiment d'explication mais je pense que cela vient de Language qui est géré de façon globale. J'ai pas tout lu le paragraphe dessus mais je pense que la réponse y est. On peut utiliser aussi la méthode Decode_Language pour recherche ce fameux 2 pour le français car cela change en fonction du système ...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Par défaut
    Merci pour ta réponse rapide.

    Hélas cela ne fonctionne pas chez moi.
    Je vais donc contourner le problème en faisant ainsi
    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
     
    if($ma_date=~/(\d*)-0?(\d*)-0?(\d*)/){
    	$year=$1;
    	$month=$2;
    	$day=$3;
     
    	$date_texte_tmp=Date_to_Text_Long($year,$month,$day);
     
    	if($date_texte_tmp=~/(\w+), (\w+)/){
     
    		$date_texte=$jour_fr{$1}." $day ".$mois_fr{$2}." $year";
    	}
            else{
    		print "Erreur conversion date\n";
    	}
    }
    else{
    	print "Erreur parsing date :: $ma_date\n";
     
    }
    Avec les tables de hachage jour_fr et mois_fr qui font la correspondance Anglais-->français.
    J'aurais préféré faire ça différemment mais bon^^.

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Pourquoi ne pas utiliser le formatteur de date POSIX strftime ?

    Pour la syntaxe du format : man strftime
    Pour utiliser la locale "fr", si ce n'est pas celle de l'environnement par défaut, utiliser setlocale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use POSIX qw(strftime setlocale);
     
    setlocale(LC_TIME => "fr_FR");
    print strftime "%A %d %B %Y", localtime(time);
    Pour aujourd'hui, le résultat est :
    Pour obtenir une date à fournir à strftime à partir d'une date numérique, utiliser mktime (aussi dans POSIX).

  5. #5
    Membre chevronné Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Par défaut
    Bonne idée Philou d'utiliser le strftime.

    Par contre aurais-tu une idée du pourquoi du comment que la version 1 chez moi ne marche pas alors que la version 2 oui ?

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Citation Envoyé par Beniou Voir le message
    Par contre aurais-tu une idée du pourquoi du comment que la version 1 chez moi ne marche pas alors que la version 2 oui ?
    Un bug ?

    Raison de plus d'utiliser POSIX, qui est dans le Core, et supporte les formats de date normalisés.

Discussions similaires

  1. Pb de blancs dans utilisation fonction FtpFindFirstFile
    Par AlvinTheMaker dans le forum MFC
    Réponses: 2
    Dernier message: 06/04/2005, 13h33
  2. Réponses: 6
    Dernier message: 24/02/2005, 10h44
  3. [GIMP] [Script-FU] Utilisation fonction gimp-curves-spline
    Par narmataru dans le forum Autres langages
    Réponses: 1
    Dernier message: 09/02/2005, 18h25
  4. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 16h59
  5. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 17h23

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