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 :

problème relatif aux dates


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut problème relatif aux dates
    Need help !!
    J'ai deux dates en php qui définissent le début et la fin d'un période. Dans cette période, je voudrais récupérer par exemple les dates de tous les mercredi ! Mais je bûche un peu et je trouve pas vraiment de solution... Je sais qu'il existe DatePeriod et DateTime mais je vois pas comment les utiliser dans mon cas !

  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 : 48
    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

    Voici une piste :
    Tu te cales sur le premier mecredi postérieur à ta date de départ ensuite tu fais +7 jours tant que la date obtenue est antérieure à ta limite supérieure

  3. #3
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Je suis d'accord avec l'idée mais je ne vois pas comment tu peux avoir le mercredi avant la date de départ (et si la date départ c'est un mercredi), il te faut un référentiel pour associer une date 20/03/2012 à un jour. Il existe peut être un algo qui le calcul sur internet sinon tu as un projet pour un bon moment .

  4. #4
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Ok, ça paraît évident mais j'y ai pas pensé du tout !
    Et comment fait-on pour avancer d'un jour une date en php? Je suis obligé d'en recréer une à chaque fois? PHP gère bien les années bissextiles, mois de 28, 30 ou 31 jours? (je sais, beaucoup de questions :s mais je débute un peu !)

  5. #5
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    Il existe peut être un algo qui le calcul sur internet sinon tu as un projet pour un bon moment .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtotime("last Wednesday")
    ça retourne un entier looooooong qui doit normalement correspondre au dernier mercredi, mais comment je fais pour faire ce cet valeur une date? Il existe sûrement une fonction toute faîte ^^
    Et pour l'algo, j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $jours = array ('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi');
    echo "nous sommes le " . $jours[date ('w', strtotime('15-04-2012'))];
    ça me renseigne si le jour du jour (c'est mal dit...) passé en paramètre de date

  6. #6
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Salut,

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $debut = new DateTime('2011-04-01');
        $fin = new DateTime('2011-05-02');
     
        $prochain_mercredi = $debut;
    // 3 = Mercredi
        while(date('N', $prochain_mercredi->getTimestamp()) != "3"){
                $prochain_mercredi = $prochain_mercredi->add(new DateInterval('P1D'));
        }
        foreach (new DatePeriod($prochain_mercredi, new DateInterval('P7D'), $fin) as $jour) {
            echo $jour->format('Y-m-d').'<br />';
        }

  7. #7
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Citation Envoyé par Nowwis Voir le message
    Salut,

    Essaie ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $debut = new DateTime('2011-04-01');
        $fin = new DateTime('2011-05-02');
     
        $prochain_mercredi = $debut;
        while(date('N', $prochain_mercredi->getTimestamp()) != "2"){
                $prochain_mercredi = $prochain_mercredi->add(new DateInterval('P1D'));
        }
    Si je saisis bien, là tant que t'as pas atteint le prochain mercredi à partir de la date de début de l'intervalle tu ajoute un jour.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        foreach (new DatePeriod($prochain_mercredi, new DateInterval('P7D'), $fin) as $jour) {
            echo $jour->format('Y-m-d').'<br />';
        }
    Et là tu fais des sauts de 7 jours pour parcourir tous les mercredi jusqu'à la date de fin de l'intervalle.

    Génial !!! Merci bien, j'avais pas connaissance de tous ces objets les dates c'est assez complexe on s'y perd vite... Merci Je mets comme résolu !

  8. #8
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Tout à fait

    T'as tout compris.

    Le mieux est même de te créer ta propre classe car comme tu dis, on s'y pert vite

  9. #9
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Oui, c'est ce que j'avais prévu de faire mais je savais pas vraiment comment... Surtout que j'ai pris pour exemple tous les mercredi mais ça peut très bien être tous les 3ème lundi de chaque moi ou encore le jeudi toutes les trois semaines !

    Alors j'ai intérêt à bien m'organiser ><. Avec le manuel PHP je pense y arriver je commence déjà à me plonger dedans pour maîtriser ces objets !

  10. #10
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Je précise juste (pour ceux qui éventuellement se servirai du code de Nowwis) que l'exemple est pour les mardi et non les mercredi !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while(date('N', $prochain_mercredi->getTimestamp()) != "2"){
    Or 2 correspond au mardi ! (cf http://php.net/manual/fr/function.date.php)

  11. #11
    Membre confirmé
    Avatar de Nowwis
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2009
    Messages
    406
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2009
    Messages : 406
    Points : 498
    Points
    498
    Par défaut
    Tout a fait, je croyais que lundi=0...

    J'ai édité mon post pour les malheureux c/c qui seront utilisé ^^'

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

Discussions similaires

  1. Problème lié aux dates
    Par shibo dans le forum Langage
    Réponses: 9
    Dernier message: 02/12/2008, 14h36
  2. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  3. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  4. Interbase - dbExpress -> problème avec les dates
    Par marghett dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 03h55
  5. [VB.NET] Relatif aux projets d'installation
    Par seemax dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 06/05/2004, 13h10

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