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 :

Problème avec le format de date sur PC


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Problème avec le format de date sur PC
    Bonjour,
    Je souhaite utiliser un programme perl soit sous linux ou sur PC window , mais j'ai un problème de format de date. Lorsque je fais tourner le programme sous le PC window en setup Français, il me converti les dates en francais avec strftime .
    Je ne trouve pas comment je peux garder le format "Anglais" de date sur le PC.

    L'utilisateur entre une date (ex 12/06/2013) et ensuite je veux effectuer des calculs à partir de cette date pour calculer des dates de livraison.
    Lorsque je reformate la date à inclure dans un xml , celle ci s'écrit en mettant les mois en français au lieu d'anglais...
    Je joins ci-dessous une partie du code ....
    ------------------------------------------------------------
    $order_date=12/06/2013 # 12/6/2013 vient de $ARGV[2]
    my @tmpdate=split(/\//,$order_date);

    # Validation of entered date
    if (($order_date !~ /\d{1,2}\/\d{1,2}\/\d{4}/) ||($tmpdate[0] > 31) || ($tmpdate[1] > 12)) {
    print "Bad date format entered , should be DD/MM/YYYY\n";
    exit;
    }
    # Month start at 0 , so substract 1 to the month
    $tmpdate[1]=$tmpdate[1]-1;
    my @dt1=(0,0,0,$tmpdate[0],$tmpdate[1],$tmpdate[2]);
    my $dt1=timelocal(@dt1);
    print "Local ".scalar localtime($dt1)." \n";
    $dt1=$dt1+(1*3600*24);
    print "L+1".scalar localtime($dt1)." ll\n";
    my $date_arrival= strftime("%d-%b-%Y",localtime($dt1));
    print "Formated date: $date_arrival\n";
    ---------------------------------------------------------
    Avez-vous une idée car la je sèche , je n'utilise peut être pas la bonne méthode ...?

    Merci

  2. #2
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Le fonctionnement de la fonction strftime dépend de la "locale" définie sur le système.
    Pour définir une locale différente de la locale par défaut, il faut utiliser la fonction setlocale du module POSIX.

    Pour plus d'info, va voir la documentation de perllocale.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Merci pour la rapidité de la réponse ,
    Je vais de ce pas pas voir comment fonctionne setlocale .. et je vous dis si je m'en sors ...

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ca marche

    JE récupère la valeur originale:
    my $ma_locale=setlocale(LC_TIME)
    Je la change ... au hasard car j'ai pas trouvé commen avoir la liste des valeurs acceptées ... :
    setlocale(LC_TIME,"english")


    La date affichée à bien le format souhaité.

    Merci encore !!

  5. #5
    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 : 58
    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
    Points : 5 753
    Points
    5 753
    Par défaut
    Pour avoir la liste des locales sur ta machine, lance la commande Unix :


Discussions similaires

  1. [BO XI R2] Problème de format de date sur invite
    Par jpcreux dans le forum Webi
    Réponses: 18
    Dernier message: 23/03/2018, 16h42
  2. [SQL Server 05] Problème avec le format de la date
    Par Monkey_D.Luffy dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 22/05/2008, 10h02
  3. Réponses: 2
    Dernier message: 08/02/2008, 21h53
  4. Problème avec les Formats de Date
    Par sebac dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 08/01/2008, 16h30
  5. [AJAX] Ajax en mode synchrone sur Safari
    Par The Blec dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 17/02/2006, 18h52

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