<?PHP
/*********************/
/* Gestion des dates */
/*********************/

// Vérifie si la chaîne est une date française correcte (format xx-xx-xxxx)

function datefrcorrecte($datef)
{
    if ($datef =="")
	{
		return FALSE;
		break;
	}
	else
	{
		if (preg_match("/(\d{2})([\/-\s])(\d{2})([\/-\s])(\d{4})/", $datef))
		{
			return TRUE;
			break;
		}
		else
		{
			return FALSE;
			break;
		}
	}
}

// Conversion des dates Français vers Anglais pour MYSQL

function datefrang($datef)
{
    if ($datef =="")
    	return "Nombre d'arguments incorrects";
	if (preg_match("/(\d{4})([\/-\s])(\d{2})([\/-\s])(\d{2})/", $datef))$tmp = 1;
    	else if (preg_match("/(\d{2})([\/-\s])(\d{2})([\/-\s])(\d{4})/", $datef))
        	$tmp = 2;

	if (!$tmp)
	{
    	return "Date non reconnue";
    }
    else
    {
    switch ($tmp)
    	{
        case 1:
        	$ch= $datef[4];
            $date = substr($datef, 8, 2).$ch.substr($datef, 5, 2).$ch.substr($datef, 0, 4);
            return $date;
            break;

		case 2:
        	$ch= $datef[2];
            $date = substr($datef, 6, 4).$ch.substr($datef, 3, 2).$ch.substr($datef, 0, 2);
            return $date;
            break;
		}
	}
}

// Conversion des dates Anglaises MySQL vers dates Françaises

function datefr($dateang) 
	{
	$split = split("-",$dateang);
	$annee = $split[0];
	$mois = $split[1];
	$jour = $split[2];
	return "$jour"."-"."$mois"."-"."$annee";
	}

 // Compare deux dates : vrai si $d1<=$d2
 // Les dates sont au format anglais (aaaa-mm-jj)
 
function comp_date($d1,$d2)
{
	if (strtotime($d1) <= strtotime($d2))
		$result = TRUE;
	else
		$result = FALSE;
		
	return $result;
}

// Formate les dates MySQL Anglaises vers le format Français
 
function formatedate($dte)
{
		$date = "";

		if (($dte <> "") AND ($dte <> "0000-00-00"))
			$date = datefr($dte);
		else
			$date = "";
			
		return $date;
}

// Différence (en jours) entre 2 dates (format anglais)

function diff_date_jours($debut,$fin) 
{

  $tDeb = explode("-", $debut);
  $tFin = explode("-", $fin);

  $diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) -
          mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
  
  return($diff / 86400);

}

// Test si date1 supérieure à date2 (Format Anglais)

function echeance_depassee_date($date1,$date2) 
{
  $depasse = FALSE;

  $tDeb = explode("-", $date1);
  $tFin = explode("-", $date2);

  if (mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]) > mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]))
  	$depasse = TRUE;
  
  return $depasse;

}

// Ajoute un jour à une date (format anglais)

function ajoute_un_jour_date($dte) 
{

  $tDte = explode("-", $dte);

  $DteTime = mktime(0, 0, 0, $tDte[1], $tDte[2], $tDte[0]);
  $DteTime = $DteTime + 86400;
  
  $date = date("Y-m-d",$DteTime);
  
  return $date;

}

// Calcule une date (format anglais) 'x' jours avant une date donnée (Anglaise)

function nouv_date_moins_jours($date,$jours)
{
    $tDate = explode("-", $date);
	
	return date("Y-m-d" , mktime(0, 0, 0, $tDate[1], $tDate[2]-$jours, $tDate[0]));

}
?>