8768 sujets

Développement web côté serveur, CMS

Bonjour à tous
Je cherche à trouver en PHP le 1er août précédent aujourd'hui
Si j'écris "1 August", il rend le 1/8/2022, car nous sommes le 31/12/2022, ce qui est ce que je cherche mais ne sera plus valide demain.
Si j'écris "1 August last year" il rend 1/8/2021, et je pense que demain il rendra 1/8/2022
Par contre "last 1 August" ne fonctionne pas, il rend 1/1/1970

Quelle est la bonne façon d'obtenir le résultat souhaité, autre que faire un calcul de l'année, ce que je fais actuellement faute de mieux ?
Plus généralement connaissez vous un document qui explique clairement ce que ça peut faire ou ne pas faire ?
Merci de votre aide
Voici le code du programme de test

<?php
	$tests = ['1 August last year', '1 August next year', 'last 1 August'];
	foreach($tests as $test) echo "$test:\t", date('Y-m-d', strtotime($test)), "<br>";
?>

et voici le résultat

1 August last year: 2021-08-01
1 August next year: 2023-08-01
last 1 August: 1970-01-01
Modérateur
PapyJP a écrit :

Je cherche à trouver en PHP le 1er août précédent aujourd'hui
Si j'écris "1 August", il rend le 1/8/2022, car nous sommes le 31/12/2022, ce qui est ce que je cherche mais ne sera plus valide demain.
Si j'écris "1 August last year" il rend 1/8/2021, et je pense que demain il rendra 1/8/2022
Par contre "last 1 August" ne fonctionne pas, il rend 1/1/1970

Ta manière de faire me parait bonne (ton code ci dessus).

Sinon, si tu veux strictement le dernier premier aout de l'année précédente, Il te suffit de récupérer l'année courante et la soustraire de 1. Ensuite, tu fais un mktime que tu ajouteras dans ton date().


    $year = intval(date('Y', time()));
    $less_than_a_year = $year - 1;
    $first_august = mktime(0,0,0,8,1,$less_than_a_year);
    
    print(date('d m Y', $first_august));



PapyJP a écrit :

Plus généralement connaissez vous un document qui explique clairement ce que ça peut faire ou ne pas faire ?


la doc officielle....

Mais pourquoi tu souhaites faire ce genre de calcul ? Quel est le but final de ton code ?
Modifié par niuxe (01 Jan 2023 - 16:30)
Le programme en question génère le calendrier en ligne des activités de l’association. La base de données contient l’historique des activités depuis 1999. Le calendrier en ligne doit contenir uniquement certains événements depuis le mois d’août précédent. D’où l’intérêt de calculer la date du 1er août avant la date du jour au moment de la mise à jour du calendrier, qui a lieu assez souvent compte tenu des changements qu'on y apporte en permanence.
C´est en révisant le programme que je me suis demandé si je ne pourrais pas éviter les quelques lignes de code qui font ce calcul. C’est juste par curiosité que j’ai posé la question.
L.a doc que j’ai pu consulter n’explique rien sur ce qu’on peut utiliser ou non. Elle ne fait que donner des exemples
Modifié par PapyJP (02 Jan 2023 - 12:58)