calcul d'heures, minutes - strtotime

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : calcul d'heures, minutes - strtotime

Re: calcul d'heures, minutes - strtotime

par guitoup » 27 sept. 2012, 11:46

Je t'en prie,

L'objet DateTime sera ton meilleur ami maintenant ! ;)

resolu, calcul de duree, 2 methodes

par macplus » 26 sept. 2012, 09:00

Bonjour Guitoup,

Entre temps, j'avais fais ça:
$date = "2012-09-25 17:00:30";//date de la variable
$jour = substr($date,8,2); // on récupère le jour 
$mois = substr($date,5,2); // puis le mois 
$annee = substr($date,0,4); // et l'annee 
$heure = substr($date,11,2); // et l'HEURE 
$minute = substr($date,14,2); // et MINUTES 
$seconde = substr($date,17,2); // et MINUTES 
$timestamp = mktime($heure,$minute,$seconde,$mois,$jour,$annee); 

$presentement = time(); //heure actuelle
$ecart_secondes = $presentement-$timestamp;  
$ecart_jours = floor($ecart_secondes / (60*60*24));
$ecart_heure = floor(($ecart_secondes - ($ecart_jours * 86400)) /(60*60));
$ecart_minute =floor(($ecart_secondes - ($ecart_jours * 86400) - ($ecart_heure * 3600)) / 60);
if.........
Mais ta solution est bien meilleure, je garde !

Merci beaucoup !

Re: calcul d'heures, minutes - strtotime

par guitoup » 25 sept. 2012, 15:53

Salut,

Pour ton problème de calcul de date, si tu es en version PHP 5.3 minimum tu as l'objet DateTime.

http://fr2.php.net/manual/en/book.datetime.php

Tu peux créer deux objets datetime à partir du format de date que tu veux avec la fonction DateTime::createFromFormat ()
Et ensuite tu peux faire des calculs très simplement avec des diff, etc.
Dans ton cas tu peux imaginer soustraire un datetime de maintenant avec le datetime de ta date et de voir si le résultat est supérieur ou non à 5 minutes.

Par exemple :
      
$now = new DateTime();
$dateToCheck = DateTime::createFromFormat('Y-m-d H:i:s', '2012-09-25 15:00:00');

$interval = $now->diff($dateToCheck, true);

if (5 <= $interval->format('%i')) {
    echo 'plus de 5 minutes de différences !';
}

calcul d'heures, minutes - strtotime

par macplus » 21 sept. 2012, 17:27

Bonjour,

je vous explique mon objectif.

J'ai un logiciel qui envoie sur mon serveur un couple $data1 $data2
-la valeur de ces couples est généralement valide entre 2 et 5 minutes.
-le logiciel, pour être certain de toujours fournir un couple à jour, renvoie les informations toutes les 5 secondes.
-un même couple peut revenir une ou plusieurs fois par jour, à plusieurs heures d'interval.

Je cherche à enregistrer tous ces couples avec le datetime de création du couple dans ma bdd mysql.
je veux pouvoir enregistrer un même couple à chaque fois qu'il est envoyé par mon logiciel, mais une seule fois durant la durée de validité de ce couple.

ex:
couples envoyés:
12h00:00 data1 - data2
12h00:05 data1 - data2
idem toutes les 5 secondes jusqu'à 12h03:52

12h03:52 data3 - data4
[...]

18h15:20 data1 - data2
18h15:25 data1 - data2

et ne prendre qu'un seul enregistrement du couple à chaque fois qu'il passe.

il faut donc que je fasse un select sur ma bb pour retrouver la derniere fois que le couple a été enregistré et qqu'il ne l'enregistre à nouveau que si ce dernier enregistrement date de + de 5 minutes...

dans mon cas de figure, unique sur meschamps ne me convient pas.J'ai donc pensé faire un select where champsdata1 = $data1 AND champsdata2 =$data2 order by id desc limit 1;

puis en php lire le date time de la ligne sortie et le comparer avec l'heure actuelle.
if (date('Y/m/d H:i:s') -datetimerecupere <= 5minutes
{}
else
{
insert dans ma bdd
}

Mais c'est là que je coince, sur comment faaire ce calcul avec strtotime, en heure je sais mais en minutes je ne trouve pas..

A moins que vous ayez une idée plus optimisée?

Merci à vous !