Peut-on additionner des heures/minutes en PHP ?

Peut-on additionner des heures/minutes en PHP ? - PHP - Programmation

Marsh Posté le 09-04-2005 à 10:01:52    

Bonjour,
 
 
Je dois ajouter x minutes à une heure donnée et j'aimerais savoir s'il existe des fonctions permettant de le faire facilement en PHP (je ne parle pas de mysql). Pour le moment, j'ai fait cette fonction qui marche bien :
 

Code :
  1. function Ajout_Minutes($Heure,$MA) //$MA : Minutes à Ajouter
  2. {
  3. // Extraction de l'heure et des minutes
  4. $H=substr($Heure,0,2);
  5. $M=substr($Heure,3,2);
  6. $NH['Heure']=$H+intval(($M+$MA)/60);
  7. $NH['Minutes']=($M+$MA)%60;
  8. return $NH['Heure'].":".$NH['Minutes'];
  9. }


 
Je suis en train de voir que j'aurais pu faire un explode mais bon, c'est pas dramatique.

Reply

Marsh Posté le 09-04-2005 à 10:01:52   

Reply

Marsh Posté le 09-04-2005 à 10:07:36    

Oui, si tu aggis sur le timestamp il y a pas de problemes


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-04-2005 à 10:09:33    

Les heures sont au format HH:MM, tu proposerais donc que je créé des timestamp pour ajouter des minutes puis les reconvertir au format HH:MM ?

Reply

Marsh Posté le 09-04-2005 à 10:57:41    

En general il est preferable en php de travailler seulement avec des timestamp (et les stoquer en tant que tels dans la bdd), et au dernier moment avant de les afficher de les transformer en HH:MM


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 09-04-2005 à 11:05:17    

C'est un fichier texte que je lis, je récupère les heures sous ce format, et je dois leur ajouter x minute avant l'insertion dans la base. C'est pour ça que je doute de l'intérêt de passer par des TIMESTAMP en fait.

Reply

Marsh Posté le 09-04-2005 à 11:07:15    

bah si tu dois leur ahouter des minutes avant de l'insérer dans la db, y a justement tout intérêt à prendre des timestamp. Tu peux même faire l'addition dans l'insertion.

Reply

Marsh Posté le 09-04-2005 à 11:25:44    

Après c'est un problème de type de cham. Comme c'est pour gérer un emploi du temps sur une semaine, on a décidé d'utiliser un type TIME et pas un TIMESTAMP qui fait entrer en compte la date, chose qui n'a pas de sens sur une semaine.


Message édité par Master_Jul le 09-04-2005 à 11:27:42
Reply

Marsh Posté le 09-04-2005 à 11:42:13    

et bien prend des time alors au lieu des timestamp, ca marche aussi.

Reply

Marsh Posté le 09-04-2005 à 11:46:04    

Ca donnerait quoi au niveau de la requête ?
 
...VALUES('12:12'+75,...  
 
:??:
 
Edit :  
'12:12'+75 donne 00:00:00
'15:42+75' donne 15:42:00
'15:42+00:75:00' donne 15:42
'15:53'+00:75:00 erreur de syntaxe
'15:42:00'+'01:25:00' donne 00:00:16  :heink:


Message édité par Master_Jul le 09-04-2005 à 12:04:25
Reply

Marsh Posté le 09-04-2005 à 14:12:58    

values(time '15:42' + interval '75 minutes')

Reply

Marsh Posté le 09-04-2005 à 14:12:58   

Reply

Marsh Posté le 09-04-2005 à 14:51:16    

esox_ch a écrit :

Oui, si tu aggis sur le timestamp il y a pas de problemes


 
+1

Reply

Marsh Posté le 09-04-2005 à 15:09:00    

gizmo a écrit :

values(time '15:42' + interval '75 minutes')


 
 :cry:  
 
time '15:42' + interval '75 minutes' : syntaxe
time '15:42' + interval '75 minute' : syntaxe
time '15:42' + interval 75 minute : passe mais retourne NULL
time '15:42' + interval '00:75' hour_minute : passe mais retourne NULL
time '15:42' + interval '01:15' hour_minute : passe mais retourne NULL
 
Sans le time c'est pareil.
 
Je suis allé là : http://www.databasejournal.com/fea [...] _2190421_1
 
Les DATE_ADD ne fonctionnent apparemment pas car ils retournent des dates.
 
Hermes, lis tout le topic, le TIMESTAMP n'est pas un type approprié dans le projet.


Message édité par Master_Jul le 09-04-2005 à 15:11:31
Reply

Marsh Posté le 09-04-2005 à 15:16:22    

Allons y gaiement. :o
 
TIME_FORMAT( DATE_ADD( '15:42' + INTERVAL '01:00'
HOUR_MINUTE ) , '%H:%i' )  
 
Syntaxe toujours. :/ :D

Reply

Marsh Posté le 09-04-2005 à 15:27:21    

Bon plus simple, en lisant le manuel :
 
ADDTIME('12:55','01:55')

Reply

Marsh Posté le 09-04-2005 à 15:38:02    

tu travailles dans quel sgdb?
 
EDIT: ah oui, mysql, j'aurais du me douter qu'ils ne respectaient pas le standard :/


Message édité par gizmo le 09-04-2005 à 15:39:08
Reply

Marsh Posté le 09-04-2005 à 15:46:17    

Oui, c'est imposé.
 
Par contre, il faudra toujours que je formate mon 75 minutes en 1:15 parce qu'il ne veut évidemment pas de ADDTIME('12:55',10 minute) ni de ADDTIME('07:57',MAKETIME(0,75,0)) :/
 
Apparemment, je suis quand même parti pour "refaire" une fonction pour ça.
 
En bref, je me demande s'il vaut mieux que je garde ma fonction qui me retourne mon heure prête à être injectée ou s'il faut que j'utilise le ADDTIME en utilisant une fonction (que je dois faire apparemment) qui tranforme les minutes en hh:mm.
 
function CalculeHeure($Minutes)
{
  $NH['Heure']=intval($Minutes/60);
  $NH['Minutes']=$Minutes%60;
       
  return $NH['Heure'].":".$NH['Minutes'];
}


Message édité par Master_Jul le 09-04-2005 à 16:00:59
Reply

Marsh Posté le 09-04-2005 à 20:42:44    

:bounce:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed