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

Modules Perl Discussion :

Utilisation de DateTime pour comparer des heures.


Sujet :

Modules Perl

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut Utilisation de DateTime pour comparer des heures.
    Je voudrai me servir de DateTime afin de vérifier si l'heure actuelle est comprise entre 2 intervalle : [12h-13h30] et [18h-9h].
    Voici mon code:
    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
     
    #!/usr/bin/perl -w
    use DateTime;
    $date_open_stream1 = DateTime->new( hour  => 12,
    					minute => 00
    				   );
    $date_open_stream2 = DateTime->new( hour  => 13,
    					minute => 30
    				   );
    $date_open_stream3 = DateTime->new( hour  => 18,
    					minute => 00
    				   );
    $date_open_stream4 = DateTime->new( hour  => 9,
    					minute => 00
    				   );
    $time = DateTime->now();
     
    print "aa" if($date_open_stream1 < $date_open_stream2);
    le résultat d'erreur:
    Name "main::date_open_stream3" used only once: possible typo at new.pl line 9.
    Name "main::time" used only once: possible typo at new.pl line 15.
    Name "main::date_open_stream4" used only once: possible typo at new.pl line 12.
    Mandatory parameter 'year' missing in call to DateTime::new
    at /usr/lib/perl5/site_perl/5.6.1/i386-linux/DateTime.pm line 171
    Je ne comprend pas pourquoi je doit a tout prit spécifier une année car je ne compte pas prendre en compte la date du jour seulement comparer l'heure actuelle avec mes intervalle et la un simple test me renvoie une erreur.

  2. #2
    Membre éprouvé
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Par défaut
    Citation Envoyé par Setsuna_00 Voir le message
    Je ne comprend pas pourquoi je doit a tout prit spécifier une année car je ne compte pas prendre en compte la date du jour seulement comparer l'heure actuelle avec mes intervalle et la un simple test me renvoie une erreur.
    Sur le CPAN, au sujet du module DateTime, il est clairement expliqué
    Invalid parameter types (like an array reference) will cause the constructor to die.

    All of the parameters are optional except for "year". The "month" and "day" parameters both default to 1, while the "hour", "minute", "second", and "nanosecond" parameters all default to 0.
    Si tu ne définis pas la date, dans le message d'erreur, tu obtiens
    DateTime::new('undef', 'hour', 12, 'minute', 0)
    Maintenant, si la date t'ennuie, tu peux simplement la remplacer par zéro
    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 DateTime;
     
     
    my $date_open_stream1 = DateTime->new( 	year   => 0,
    					hour => 12,
    					minute => 00
    				   );
    my $date_open_stream2 = DateTime->new( 	year   => 0,
    					hour  => 13,
    					minute => 30
    				   );
    my $date_open_stream3 = DateTime->new( 	year   => 0,
    					hour  => 18,
    					minute => 00
    				   );
    my $date_open_stream4 = DateTime->new( 	year   => 0,
    					hour  => 9,
    					minute => 00
    				   );
    my $time = DateTime->now();
     
    print "aa" if($date_open_stream1 < $date_open_stream2);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Par défaut
    Merci bcps j'avais effectivement lu la docs sur CPAN mais étant de l'anglais je l'ai comprise de travers .

  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
    Citation Envoyé par Setsuna_00 Voir le message
    Je voudrai me servir de DateTime afin de vérifier si l'heure actuelle est comprise entre 2 intervalle : [12h-13h30] et [18h-9h].
    Concernant le deuxième intervalle, il me semble qu'il faudrait définir un jour également, afin que la borne inférieure (18h) soit sur le jour "n" et la borne supérieure (9h) soit sur le jour "n+1".

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

Discussions similaires

  1. [11g] Utilisation d'un DECODE pour comparer des dates
    Par shakapouet dans le forum SQL
    Réponses: 6
    Dernier message: 04/04/2014, 16h29
  2. [VB]Formatter une textbox pour saisir des heures
    Par alexxx69 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 21/02/2006, 06h21
  3. utiliser données texte pour faire des calculs
    Par sarah67 dans le forum Access
    Réponses: 20
    Dernier message: 06/02/2006, 14h09
  4. utiliser un script pour inserer des objets 3D
    Par s_mihai dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/08/2005, 13h52
  5. Utiliser un parser pour extraire des formules
    Par EpOnYmE187 dans le forum C++
    Réponses: 2
    Dernier message: 15/03/2005, 23h55

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