Calcul sur les dates en PHP

Rechercher

Calcul sur les dates en PHP

Par giresse  -  6 reponses  -  Le 09/02/2023 16:24  -  Editer  - 

Bonjour chers amis!!!
J'ai un sérieux problème pour le calcul des dates en PHP. Je suis en face d'un problème pour déterminer la durée d'une grossesse à partir d'une date donnée. Je m'explique:
Voici les nominations d'abord:
- SG = Semaine de Grossesse
- DDR = Date de Dernière Règle
- DA = Date d'Accouchement

Pour déterminer la DA, nous devons appliquer la formule suivante:
DA = DDR + 14 jours + 9mois
exemple: Si la date des dernières règles (DDR) ont débuté le 09 février 2023 en considérant que le cycle menstruel est de 28 jours (cycle par défaut), la date d'accouchement (DA) doit être :
DA = 09/02/2023 + 14 jours
ce qui donne 23/02/2023
Février 2023 + 9 mois = Novembre 2023
Donc DA sera le 23/11/2023. Pour faire tout ceci dans un script PHP me pose un grand souci avec le calcul de date en PHP.
NB: On peut aussi vouloir connaître l'évolution de la grossesse en déterminant le nombre par semaine donc le SG semaine de grossesse. comment déterminer le SG à partir d'une date donnée.
Merci pour votre compréhension, j'espère que, après vos réactions, je saurai comment calculer les dates en PHP

 

Réponses apportées à cette discussion

Par giresse  -  Le 10/02/2023 11:28  -  Haut de page  - 

Pour améliorer mon probleme, voici quelque bout des codes que j'avais déjà écrit:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<?php require_once ('elements/header.php'); ?>
<form action="" method="POST" class = "form-control">
    <div class="form-group">
        <input type="date" name="date_Verify" class="form-control"/>
    </div><br>    
    <div class="form-group">
        <input type="submit" name="valider" value="valider"/>
    </div><br>      
</form>
    <?php
    require_once('bdd.php');
    $success = null;

    if(isset($_POST['valider'])){
        $date_verify = $_POST['date_Verify'];
        $sql = $db->prepare("SELECT * FROM T_DateCreate_dat ");
        $sql->execute([
            'aac_debut' => $date_verify
        ]);
        $posts = $sql->fetchAll(PDO::FETCH_OBJ);
       foreach($posts as $post) {
            $datedebut = $post->aac_debut;
            $datefin = $post->aac_fin;
            if($datedebut <= $date_verify){
              $diff = date_diff(date_create($date_verify), date_create($datedebut));

              $success =   " <h3>la difference entre le " .$datedebut ." et le ".$date_verify." est ". $diff->format('%d')." jours</h3> ";

            }
            else{
                $success =   " <h3>La date de debut le " .$datedebut ." est inferieure ou egale a la date du ".$date_verify." </h3> ";
            }

       }

    } 
    ?>
    <?php if($success):?>
            <div class="alert alert-success" style="text-align:center;">
                <?= $success ?>
            </div>
    <?php endif?>


 <?php require_once ('elements/footer.php'); ?>
</body>
</html>
 
Par giresse  -  Le 10/02/2023 11:36  -  Haut de page  - 

Avec ce code je suis arrivé à déterminer le nombre d'année et le nombre de jour entre deux dates en utilisant la fonction diff. Par contre, je suis bloqué au niveau de déterminer le nombre de semaine. ça c'est mon premier souci. mon deuxième souci c'est de pouvoir présumer la date de l'accouchement si on doit tenir compte de la formule ci-après: DA = DDR + 7 + 3
7 répresente le 7 jours de la semaines pour avoir une semaine
3 représente les trois prochains mois

 
Par Cyrano  -  Le 11/02/2023 06:41  -  Haut de page  - 

Une des astuces pour calculer des nombres de jours ou de semaines consiste à transformer une date en timestamp, c'est à dire le nombre de secondes écoulées depuis le 1er janvier 1970.

Donc si on a une date de début et une date de fin, on crée les deux timestamp et on fait ensuite une soustraction. Ensuite, pour calculer le nombre de jours, on divise le résultat par (24X60X60) (24 heures de 60 minutes de 60 secondes.

Exemple :

<?php
/**
 * On définit une date de début et une date de fin en timestamp UNIX
 */
$datedebut = mktime(0,0,0,2,23,2023);
$datefin   = mktime(0,0,0,11,23,2023);
/**
 * On calcule la durée entre les deux : le résultat sera en nombre de secondes.
 */
$difference = $datefin - $datedebut;
/**
 * Calcul du nombre de jours
 */
$nbjours = $difference / (24+60+60);
/**
 * Calcul du nombre de semaines
 */
$nbsemaines = $nbjours / 7;

La fonction mktime devrait résoudre le problème, même s'il y a un chevauchement sur deux années successives.

Voir la documentation sur la fonction mktime.

 
Par giresse  -  Le 11/02/2023 17:38  -  Haut de page  - 

Bonjour Cyrano
Merci pour votre intervention, je m'y mets toute de suite pour voir ce que ça va me donner comme résultat

 
Par giresse  -  Le 11/02/2023 17:50  -  Haut de page  - 

Voici le résultat que je viens d'obtenir: Nbr de jour : 1314600 et Nbr de semaine : 187800

 
Par giresse  -  Le 11/02/2023 18:13  -  Haut de page  - 

par contre j'ai utilisé ce bout de code ci-dessous, ça me détermine le nombre de jour mais lorsqu'on a une date de deux ou trois mois passés, le résultat n'est pas bon
$diff = date_diff(date_create($Datedebut), date_create($datefin));
$nbr_semaine = $diff->format('%d');

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |