8791 sujets

Développement web côté serveur, CMS

Bonjour,
j'ai un ptit soucis de calcule de diff entre deux dates en heure Smiley confused
je doit calculer le nombre d'heure entre deux date jours ouvré et je suis un perdu, j'ai un peut de mal avec les dates.
je sais trouver le nombre d'heur entre deux date en utilisant ce code mais ca compte pas les jours non ouvrés


		$debut = new DateTime($d1);
		$fin = new DateTime($d2);
		$interval = $debut->diff($fin);
		$interval_heures = round(($interval->format('%d') * 24) + $interval->format('%h') + ($interval->format('%i')/60),2);



auriez vous une ptite idée de comment faire?
merci pour votre aide

cdt timo Smiley biggrin
Modifié par timo (26 Jun 2012 - 17:48)
voici une solution

static function calcul_nombre_heure_deux_date($date1,$date2)
{

	$debut = new DateTime($date1); 
	$fin = new DateTime($date2);
	
	
	list($year_debut,$mois_debut,$jour_debut) = explode('-',$date1); 
	list($year_fin,$mois_fin,$jour_fin) = explode('-',$date2);
		
	$nbjr_ferme = 0;
	
	while($year_debut.$mois_debut.$jour_debut < $year_fin.$mois_fin.$jour_fin)
	{	
		$date1 = $year_debut.'-'.$mois_debut.'-'.$jour_debut;
		$date2 = $year_fin.'-'.$mois_fin.'-'.$jour_fin;

		//si en rencontre samedi et dimanche en incremente l'index;			
		if(date('D',strtotime($date1)) == 'Sat' || date('D',strtotime($date1)) == 'Sun')
		{
			$nbjr_ferme++;
			
		}

		$date1 = date('d-m-Y',mktime(0,0,0,$mois_debut,$jour_debut+1,$year_debut));
	
		list($jour_debut,$mois_debut,$year_debut) = explode('-',$date1);

	}
	
	$interval = $debut->diff($fin);
	$interval_heures = ($interval->format('%d') * 24) + $interval->format('%h') + ($interval->format('%i')/60);
	$nbr_heure_non_ouvre = ($nbjr_ferme * 24);
	$interval_heures = $interval_heures - $nbr_heure_non_ouvre;
	
	return $interval_heures;
		
}
Bonjour,

Merci d'avoir partagé ta solution.

Les jours fériés sont-il considérés comme des jours ouvrés ?
Modifié par Julien Royer (26 Jun 2012 - 17:54)
cette fonction ne pend pas en compte les jours férié, mais j'y travail Smiley lol , si quelqu'un à une petite idée, Smiley cligne