[RESOLU] année académique précédente en php

Eléphanteau du PHP | 31 Messages

07 sept. 2021, 10:38

bonjour,
je souhaiterais afficher l'année académique précédente! par exemple l'année académique actuelle s'écrit chez nous ici comme ceci: 2021-2022.
je voudrais par un code écrire l'année acadamique précédente par code php c'est à dire 2020-2021.Pour l'année en cours j'ai pu le faire par ce code.


Code : Tout sélectionner

$datev=''.date("Y",strtotime("-1 year")).'-'.date("Y").''; echo $datev;
Merci pour votre assistance!

ynx
Mammouth du PHP | 586 Messages

07 sept. 2021, 17:47

Bonjour,

Avec l'exemple proposé, j'obtiens bien le résultat "2020-2021" (puisque date("Y") doit retourner l'année en cours, soit 2021, sauf si le serveur PHP est déjà en 2022 je suppose ?).

En reprenant le même principe, on peut simplement indiquer "-2 years" dans strtotime() :
$datev = date("Y", strtotime("-1 year")) . '-' . date("Y");
echo $datev; // 2020-2021

$datePrev = date("Y", strtotime("-2 years")) . '-' . date("Y", strtotime("-1 year"));
echo $datePrev; // 2019-2020
(Au passage, pas besoin de concaténer des chaines vides au début et à la fin de l'affectation.)
Modifié en dernier par ynx le 07 sept. 2021, 22:57, modifié 1 fois.

ynx
Mammouth du PHP | 586 Messages

07 sept. 2021, 22:57

Pour compléter un peu ma première réponse.

Puisque l'année académique est à cheval sur deux années du calendrier, il faut avant tout définir à partir de quand démarre l'année académique puis comparer cette date avec la date à afficher pour obtenir la bonne période.

Un petit exemple possible pour afficher la bonne période en considérant que l'année académique commence le 1er septembre de chaque année (on peut donc simplement vérifier si le mois de la date à afficher est supérieur ou égal à 9 pour obtenir la bonne période à partir de l'année de cette date) :
function getAcademicYears($datetime = 'now') {
    $time = strtotime($datetime);
    $year = date('Y', $time);
    
    if (date('n', $time) >= 9) {
        return $year . '-' . $year + 1;
    }
    
    return $year - 1 . '-' . $year;
}

echo 'Date actuelle : ' . date('d/m/Y'); // Date actuelle : 07/09/2021
echo 'Période actuelle : ' . getAcademicYears(); // 2021-2022
echo 'Période précédente : ' . getAcademicYears('now -1 year'); // 2020-2021
echo 'Période suivante : ' . getAcademicYears('now +1 year'); // 2022-2023

echo 'Période pour le 1er janvier 2021 : ' . getAcademicYears('1 Jan 2021'); // 2020-2021
echo 'Période pour le 1er décembre 2021 : ' . getAcademicYears('1 Dec 2021'); // 2021-2022
echo 'Période pour le 14 avril 2022 : ' . getAcademicYears('14 Apr 2022'); // 2021-2022
echo 'Période pour le 7 septembre 2022 : ' . getAcademicYears('7 Sep 2022'); // 2022-2023

Eléphanteau du PHP | 31 Messages

09 sept. 2021, 23:06

Merci infiniment! vous avez donné la solution au point d'aller au delà même de la solution.Encore merci et merci!