Ajouter un temps à une date en PHP
Résolu/Fermé
Absot
Messages postés
777
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2020
-
19 janv. 2010 à 11:47
Bertrand40 Messages postés 1196 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 - 19 janv. 2010 à 14:54
Bertrand40 Messages postés 1196 Date d'inscription vendredi 27 mars 2009 Statut Membre Dernière intervention 27 février 2023 - 19 janv. 2010 à 14:54
Bonjour, je souhaiterais créer une fonction qui me permet d'ajouter un temps à une date passé en paramètre sous la forme 2009-03-12 11:00:00.
J'ai pensé à faire un mktime de cette date pour la retrouver sous forme d'un entier puis d'y ajouter le temps que je veux (en seconde) et de redéfinir la date sous forme Y-m-d H:i:s et donc voici mon code:
Mais le problème est que ça me retourne: 2010-04-13 17:47:10
Où est mon problème svp?
J'ai pensé à faire un mktime de cette date pour la retrouver sous forme d'un entier puis d'y ajouter le temps que je veux (en seconde) et de redéfinir la date sous forme Y-m-d H:i:s et donc voici mon code:
$new_date = mktime($date); $new_date = $new_date + (60*60*24); $date = date( "Y-m-d H:i:s", $new_date);
Mais le problème est que ça me retourne: 2010-04-13 17:47:10
Où est mon problème svp?
A voir également:
- Ajouter un temps à une date en PHP
- Renommer plusieurs fichiers en même temps - Guide
- Combien de temps reste une story sur facebook - Guide
- Ajouter une signature sur word - Guide
- Impossible d'ajouter un ami sur facebook - Guide
- Comment ouvrir un fichier dat - Guide
7 réponses
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
19 janv. 2010 à 12:25
19 janv. 2010 à 12:25
Bonjour,
Je pense que ton erreur vient du fait que tu ne peux pas entrer le paramètre complet dans le mktime : il faut entrer un paramètre pour chacun des composants du temps :
mktime(heure, min, sec, jour, mois, année)
Donc si ta date de départ est : 2009-03-12 11:00:00
$new_date = mktime(11, 0, 0, 3, 12, 2010);
$new_date = $new_date + (60*60*24);
$date = date( "Y-m-d H:i:s", $new_date);
Je pense que ton erreur vient du fait que tu ne peux pas entrer le paramètre complet dans le mktime : il faut entrer un paramètre pour chacun des composants du temps :
mktime(heure, min, sec, jour, mois, année)
Donc si ta date de départ est : 2009-03-12 11:00:00
$new_date = mktime(11, 0, 0, 3, 12, 2010);
$new_date = $new_date + (60*60*24);
$date = date( "Y-m-d H:i:s", $new_date);
Absot
Messages postés
777
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2020
44
19 janv. 2010 à 12:27
19 janv. 2010 à 12:27
Le problème est que $date est une chaîne de caractère donc il faut que je trouve un moyen de la décomposer.. :/
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
19 janv. 2010 à 12:42
19 janv. 2010 à 12:42
Je t'ai fait un petit truc mais sache que je suis pas calé.. Autrement dit il existe certainement plus simple.
$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
for ($i = 0; $i <=5; $i++) echo '' . $date[$i] . '<br />';
$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
for ($i = 0; $i <=5; $i++) echo '' . $date[$i] . '<br />';
Absot
Messages postés
777
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2020
44
19 janv. 2010 à 13:01
19 janv. 2010 à 13:01
Ca ne fonctionne pas :/
Voilà mon nouveau code:
En nouvelle date, j'ai 2001-02-01 17:03:12
Voilà mon nouveau code:
$date=str_replace('-', ' ', $date); $date=str_replace(':', ' ', $date); $date=explode(' ', $date); $new_date = mktime($date[0], $date[1], $date[2], $date[3], $date[4], $date[5]); $new_date = $new_date + (60*60*24*10); $date = date( "Y-m-d H:i:s", $new_date);
En nouvelle date, j'ai 2001-02-01 17:03:12
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
19 janv. 2010 à 13:08
19 janv. 2010 à 13:08
Normal tu t'es trompé dans l'ordre. Je viens de tester et ça fonctionne :
$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
$new_date = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
$new_date = $new_date + (60*60*24);
echo $new_date = date( "Y-m-d H:i:s", $new_date);
$date = '2009-03-12 11:00:00';
$date=str_replace('-', ' ', $date);
$date=str_replace(':', ' ', $date);
$date=explode(' ', $date);
$new_date = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0]);
$new_date = $new_date + (60*60*24);
echo $new_date = date( "Y-m-d H:i:s", $new_date);
Absot
Messages postés
777
Date d'inscription
mardi 28 octobre 2008
Statut
Membre
Dernière intervention
4 septembre 2020
44
19 janv. 2010 à 14:04
19 janv. 2010 à 14:04
Ah ouai ça marche, j'ai été trop vite :D
Merci, je mets en résolu. :)
Merci, je mets en résolu. :)
Bertrand40
Messages postés
1196
Date d'inscription
vendredi 27 mars 2009
Statut
Membre
Dernière intervention
27 février 2023
194
19 janv. 2010 à 14:54
19 janv. 2010 à 14:54
De rien :)