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 :

Utilisation de DateTime et comparaison dans un intervalle


Sujet :

Langage PHP

  1. #1
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Points : 604
    Points
    604
    Par défaut Utilisation de DateTime et comparaison dans un intervalle
    Bonjour à toutes et tous

    Je débute en PHP, j'apprends tout seul et j'essaye de me créer des mini-projets pour mettre en application ce que j'apprends. Actuellement, je suis en train d'utiliser la fonction DateTime pour essayer de créer un petit système d'affichage en fonction de la date. J'ai actuellement développé ce 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
    <?php
    $date = new DateTime("now");
    $date1 = new DateTime("2014-11-19");
    $date2 = new DateTime("2014-11-26");
    $date3 = new DateTime("2014-12-03");
    if(($date >= $date1) AND ($date < $date2)){
    	echo "coucou";
    }
    elseif(($date >= $date2) AND ($date < $date3)){
    	echo "sa va ";
    }
    else{
    	echo "rien";
    }
    ?>
    J'ai deux questions: est-ce que ce code est valide (dans les tests faits, j'obtiens bien mon "coucou" donc je pense que c'est bon mais j'aimerai un avis sur la syntaxe) ? Est-ce que je vais avoir un problème si dans mon intervalle de comparaison, il y a un changement d'année ? (Normalement je dirais non mais je préfère demander)

    Une dernière question mais c'est plus un bonus, est-ce qu'il y a possibilité de ne plus utiliser l'année pour le relevé de dates et la comparaison mais seulement le mois et le jour ?

    Cordialement,
    Clairetj
    Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    ton code est équivalent à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $date  = new DateTime("now");
    $date1 = new DateTime("2014-11-19");    // 2014-11-19 00:00:00
    $date2 = new DateTime("2014-11-26");
    $date3 = new DateTime("2014-12-03");
    $msg   = 'rien';
    if ($date >= $date1) {
        if ($date < $date2) {
            $msg = 'coucou';
        } elseif ($date < $date3) {
            $msg = 'ça va';
        }
    }
    echo $msg;
    Ton code est valide.

    Ben si tu as un changement d'année, je ne vois pas pourquoi tu aurais un problème. Tu vas avoir une autre date c'est tout.

    Et pour ta question bonus : une date sans année n'est plus une date.

  3. #3
    Membre confirmé

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    532
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2011
    Messages : 532
    Points : 604
    Points
    604
    Par défaut
    Bonjour et merci rawsrc pour tes réponses. je remarque ta structure en if que tu propose, est-elle plus performante que celle que j'ai proposé où est-ce juste une autre façon d'écrire la même chose ?

    Une dernière question juste pour ma culture personnel: la ligne de code qui suit est-elle de l'orienté objet ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date1 = new DateTime("2014-11-19");
    Si vous voulez suivre les différents championnats de football américain en France, en Europe et dans le Monde (en tout 32 pays différents), c'est sur www.fandefootus.fr

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    "Orienté objet" sur une seule ligne ça veut pas dire grand chose. Il vaudrait voir le contexte pour dire si c'est un développement objet ou pas (voir surtout si le code se trouve dans une class ou pas).

    En tout cas, oui c'est bien un objet que tu instancies (c'est ce que veux dire le mot clef new).

    Quant à la performance, c'est tellement similaire qu'on va dire que c'est identique, c'est pas de ce côté là qu'il faut chercher des optimisations de performances.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    HS mais puisque tu débutes, mieux vaut utiliser && et || comme opérateurs logiques plutôt que AND et OR. Il y a une différence subtile entre les deux (une question de précédence), et cela peut entraîner des bugs difficiles à déboguer quand on utilise OR et AND (car ça ne saute pas aux yeux tout de suite si on ne connaît pas cette différence).

    Donc à moins que tu ne saches la différence entre || et OR et que tu utilises sciemment OR à cause de cette différence, mieux vaut utiliser || (et &&).

Discussions similaires

  1. utiliser un tag de struts dans un taglibs
    Par Boosters dans le forum Struts 1
    Réponses: 3
    Dernier message: 19/06/2006, 18h18
  2. Réponses: 4
    Dernier message: 03/03/2004, 11h04
  3. Réponses: 4
    Dernier message: 12/09/2003, 11h38
  4. Réponses: 7
    Dernier message: 02/06/2003, 08h38
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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