Calculer date avec strtotime ou mktime

Résolu
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 27 mars 2013 à 20:57
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 - 28 mars 2013 à 13:49
Bonjour,

Je viens au secours, j'ai une variable date et je voudrais lui rajouter 8 jours
But date du document + 8 jours pour Echeance, ma date de depart et FR JJ/MM/AAAA

donc j'ai un peu recherche sur le web et j'ai trouve deux technique :

$dat = '01/01/2013';

// solution 1 ---------------------------------------------
function retour_echeance($timestamp) {
$j = substr($timestamp,0,2);
$m = substr($timestamp,3,2);
$a = substr($timestamp,6,4);
$dat_plus8j = date('d/m/Y',mktime(0,0,0,$m,($j + 8),$a));
return $dat_plus8j;
}
echo retour_echeance($dat) . '
';
//---------------------------------------------------------
// solution 2 ---------------------------------------------
$dat = implode('/', array_reverse(explode('/',$dat)));
echo date('d/m/Y', strtotime("+8 days", strtotime($dat)));
//---------------------------------------------------------

Les deux solutions marche, mais quelle est la plus rapide entre les deux ?
Ou y a t'il une 3eme solution avec le PHP 5.4 ?

la solution 2 est interessante car elle accepte 1/1/2013, mais dans mon cas c'est formater en JJ/MM/AAAA
je pense opter pour la solution 2, mais votre avis averti m'interesse.

Beau Temps Belle Mer
Georgio

2 réponses

nicotontige
28 mars 2013 à 13:24
Bonjour,

Depuis PHP5, il existe des fonctions date très simple (Lien ici).

Pour ton exemple, cette fonction suffit :
<?php
$date = date_create_from_format('j/m/Y', '28/01/2013');
date_add($date, date_interval_create_from_date_string('8 days'));
echo date_format($date, 'd/m/Y'); // affiche 05/02/2013
?>
3
cs_eli42 Messages postés 143 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 juillet 2023 1
28 mars 2013 à 13:49
Bonjour,

Merci pour la reponse rapide
Je vais opter pour ta formule

Beau Temps Belle Mer
0
Rejoignez-nous