par
yann18 » 18 avr. 2014, 15:28
J'oubliais, effectivement je peu utiliser date() pour avoir un calcul d'heure précis, mais après pour les minutes c'est pas pratique à miltiplier par un taux horaire.
Si la personne bosse 4h30, il faut faire 4.5 * le taux horaire et non pas 4.30
Donc moi je prenais le timestamp de fin - le timestamp de début divisé par 3600 pour ramener en heures, je multipliais par le taux horaire et j'avais le prix à la minute près ! C'était simple sauf que ça me mettait une heure de trop à cause du GMT+1 ^^
toute date en php est rattachée au fuseau horaire(timezone) défini dans la configuration apache(date.timezone="Europe/Paris"). Donc tous les calculs sur les dates prendront toujours en compte la timezone et je ne comprends pas comment tu dois gérer à la main le décalage horaire alors cela n'est pas de ton ressort en tant que dev.
Par exemple avec DateTime de php, on peut effectuer un calcul sur le nombre d'heures travaillées , de 8h à 12h:
$date_debut = new DateTime("2014-04-18 07:00:00");
$date_fin = new DateTime("2014-04-18 12:00:00");
//difference entre de 2 dates exprimée en secondes
$date_diff = $date_fin->format('U') - $date_debut->format('U');
//nombre d'heures travaillées en heures
$heures_travaillees = $date_diff/3600;//donnera 5h
[quote="Litchii"]J'oubliais, effectivement je peu utiliser date() pour avoir un calcul d'heure précis, mais après pour les minutes c'est pas pratique à miltiplier par un taux horaire.
Si la personne bosse 4h30, il faut faire 4.5 * le taux horaire et non pas 4.30
Donc moi je prenais le timestamp de fin - le timestamp de début divisé par 3600 pour ramener en heures, je multipliais par le taux horaire et j'avais le prix à la minute près ! C'était simple sauf que ça me mettait une heure de trop à cause du GMT+1 ^^[/quote]
toute date en php est rattachée au fuseau horaire(timezone) défini dans la configuration apache(date.timezone="Europe/Paris"). Donc tous les calculs sur les dates prendront toujours en compte la timezone et je ne comprends pas comment tu dois gérer à la main le décalage horaire alors cela n'est pas de ton ressort en tant que dev.
Par exemple avec DateTime de php, on peut effectuer un calcul sur le nombre d'heures travaillées , de 8h à 12h:
[php]
$date_debut = new DateTime("2014-04-18 07:00:00");
$date_fin = new DateTime("2014-04-18 12:00:00");
//difference entre de 2 dates exprimée en secondes
$date_diff = $date_fin->format('U') - $date_debut->format('U');
//nombre d'heures travaillées en heures
$heures_travaillees = $date_diff/3600;//donnera 5h[/php]