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

PHP & Base de données Discussion :

Périodicité d'un évènement


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut Périodicité d'un évènement
    Bonjour,

    J'ai une date, par exemple, le 11/06/2019, et j'ai 4 types de valeurs : jours, semaine, mois, année. Et un nombre, exemple 5.

    Pour chacun des cas de figures, j'aimerais chaque jour vérifier si je tombe sur un cas.

    Exemple

    Tous les 5 jours
    Toutes les 5 semaines
    Tous les 5 mois
    Tous les 5 ans.

    Donc, le 12/06/2019, je lance une fonction (que j'essai de créer), je dois définir si je suis dans ce cas de figure sachant qu'on a pour date de départ le 11/06/2019.
    Pour cet exemple, on aura donc pas de résultat.

    Par contre, si on imagine qu'on est le 16/06/2019, on tombe sur le cas "Tous les 5 jours", au même titre que si on était le 21/06/2019, ....

    Je suis parti sur l'utilisation de Carbon avec floatDiffInDays (lorsqu'il s'agit des jours), mais c'est pas encore ça.

    Si vous avez des idées, je suis preneur.

    Merci d'avance

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Quelque chose dans ce goût là ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
            $now = Carbon::now();
            $date_five_days = Carbon::createFromFormat('Y-m-d','2019-06-01')->addDays(5);
            $date_five_week = Carbon::createFromFormat('Y-m-d','2019-06-01')->addWeeks(5);
            $date_five_month = Carbon::createFromFormat('Y-m-d','2019-06-01')->addMonth(5);
            $date_five_years = Carbon::createFromFormat('Y-m-d','2019-06-01')->addYears(5);
     
            if($now->equalTo($date_five_days)){
                ..........
            }

  3. #3
    Membre éclairé Avatar de PIEPLU
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    507
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 507
    Par défaut
    Je suis parti dans ce sens là, et ça semble marcher.

    periodicity_name
    1 = jour
    2 = semaine
    3 = mois
    4 = année

    periodicity_value = 5 dans notre précédent exemple

    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
     
                $insert = false;
     
                if ($expense->periodicity_name === 1) {
                    if ((int)Carbon::parse($expense->first_deadline)->floatDiffInDays(date('Y-m-d 00:00:00')) % $expense->periodicity_value === 0) {
                        $insert = true;
                    }
                } elseif ($expense->periodicity_name === 2) {
                    if ((int)Carbon::parse($expense->first_deadline)->floatDiffInDays(date('Y-m-d 00:00:00')) % (7 * $expense->periodicity_value) === 0) {
                        $insert = true;
                    }
                } elseif ($expense->periodicity_name === 3) {
                    if ((int)Carbon::parse($expense->first_deadline)->floatDiffInMonths(date('Y-m-d 00:00:00')) % $expense->periodicity_value === 0) {
                        $insert = true;
                    }
                } elseif ($expense->periodicity_name === 4) {
                    if ((int)Carbon::parse($expense->first_deadline)->floatDiffInYears(date('Y-m-d 00:00:00')) % $expense->periodicity_value === 0) {
                        $insert = true;
                    }
                }

Discussions similaires

  1. Réponses: 11
    Dernier message: 06/10/2015, 10h14
  2. Pas d'événement OnClose quand on arrête W2K
    Par Altau dans le forum C++Builder
    Réponses: 9
    Dernier message: 26/01/2009, 18h36
  3. exploiter un évènement d'un sous composant dans un
    Par bjl dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/12/2002, 16h44
  4. Modification de l'évènement OnClick
    Par MrJéjé dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2002, 12h52
  5. Redéfinir l'événement OnExit de mon composant TEditFloat
    Par Seb des Monts dans le forum C++Builder
    Réponses: 5
    Dernier message: 18/06/2002, 16h10

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