info:myphp:calculer_un_delai_entre_deux_dates

PHP dates, heure, time

pfoah les dates c'est compliqué, mais php peut aider!
<?php
/* Description :
[[calculer un délai entre deux dates]] p.ex. pour afficher une information x avant la date y puis une information z
Auteur : Fred Radeff
Url : http://radeff.red 
keyword: maketime, strtotime, time, date, délai
*/
 
#petite fonction pour transformer les seconde en h:m:s
  function sec2hms ($sec, $padHours = false) //source: http://www.laughing-buddha.net/jon/php/sec2hms/
  {
 
    // holds formatted string
    $hms = "";
 
    // there are 3600 seconds in an hour, so if we
    // divide total seconds by 3600 and throw away
    // the remainder, we've got the number of hours
    $hours = intval(intval($sec) / 3600); 
 
    // add to $hms, with a leading 0 if asked for
    $hms .= ($padHours) 
          ? str_pad($hours, 2, "0", STR_PAD_LEFT). ':'
          : $hours. ':';
 
    // dividing the total seconds by 60 will give us
    // the number of minutes, but we're interested in 
    // minutes past the hour: to get that, we need to 
    // divide by 60 again and keep the remainder
    $minutes = intval(($sec / 60) % 60); 
 
    // then add to $hms (with a leading 0 if needed)
    $hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT). ':';
 
    // seconds are simple - just divide the total
    // seconds by 60 and keep the remainder
    $seconds = intval($sec % 60); 
 
    // add to $hms, again with a leading 0 if needed
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT);
 
    // done!
    return $hms;
 
  }
 
$aujourdhui=date("U", mktime());
$delai = mktime(0,0,0,3,1,2009); //March 1, 2009
$tempsrestant=$delai-$aujourdhui;
echo "<pre>";
echo "Délai: " .date("d-m-Y H:i", $delai) ."\n";
echo "Maintenant: " .date("d-m-Y H:i", $aujourdhui) ."\n";
echo " Différence: " .$tempsrestant ." secondes\n\n"; 
if($tempsrestant<0) {
echo "Délai dépassé";
} else {
echo "Délai courant, il vous reste " .sec2hms($tempsrestant) ." h:m:s";
}
echo "</pre>";
 
 
?>
<?
/* Source: http://www.phpcs.com/code.aspx?id=27585 */
# // Indiquer le nombre de jours, mois, ans et le signe plus si c'est en positif.

$nb_ans='0';
$nb_mois='0';
$nb_jours = '-15'; // Par exemple
echo 'il y a quinze jours on étais le : ';
echo date('d/m/Y', mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
#
#
# Et voici la fonction :
#
# //--------------------------------------------------------------------
# // string fonction MyGetDate([int],[int],[int],[TRUE])
# //--------------------------------------------------------------------
# // Cette fonction retourne une date "relative" à la date du jour, contrairement à mktime qui retourne une date "absolue".
# // L'appel sans argument retourne la date du jour au format 15/11/2004
# //
# // Les arguments (dans l'ordre) :
# // [-] année(s) -> année(s) à ajouter/enlever à la date du jour
# // [-] mois -> mois à ajouter/enlever à la date du jour
# // [-] jour(s) -> jour(s) à ajouter/enlever à la date du jour
# // [True] -> format MySql (2004/11/15)
# //---------------------------------------------------------------------
# // En cas d'erreur sur les arguments, MyGetDate retourne FALSE.
# // Sinon une chaine contenant la date demandée
# //---------------------------------------------------------------------
function MyGetDate( $nb_ans='0', $nb_mois='0', $nb_jours='0', $mysql=FALSE){
if( is_int($nb_ans) && is_int($nb_mois) && is_int($nb_jours)){
$mysql ? $format = "Y-m-d" : $format = "d/m/Y";
return date($format, mktime(0,0,0,date('m')+$nb_mois,date('d')+$nb_jours,date('Y')+$nb_ans));
}
else{
return FALSE;
}
}
?>
<?
setlocale(LC_TIME, "fr");
echo "Mise à jour: ",strftime("%A %d %B %Y", getlastmod());
?>
<?
/*
Auteur : Thierry MOSCATO
Url : http://www.nexen.net

Transform a php get date in a human readable format (english - french)

Modified 2007 Fred radeff, radeff.red (date anglaise)

if you want to pass another day than the current day, use get_date, eg:

$now=date("U");
$daysago=$now-$UNIXTIME;
$daysago=intval($daysago/(24*3600));

$lastvisit=getdate($UNIXTIME);
$lastvisit=list(f_datefr($lastvisit),);

*/


 function f_datefr(){
 // Declaration du tableau des noms de jours en Francais
  //-------- ici
  $j_fr{0} = "Dimanche";
  $j_fr{1} = "Lundi";
  $j_fr{2} = "Mardi";
  $j_fr{3} = "Mercredi";
  $j_fr{4} = "Jeudi";
  $j_fr{5} = "Vendredi";
  $j_fr{6} = "Samedi";
 
  // Declaration du tableau des noms de jours en Francais
  $m_fr{1} = "Janvier";
  $m_fr{2} = "Fevrier";
  $m_fr{3} = "Mars";
  $m_fr{4} = "Avril";
  $m_fr{5} = "Mai";
  $m_fr{6} = "Juin";
  $m_fr{7} = "Juillet";
  $m_fr{8} = "Aout";
  $m_fr{9} = "Septembre";
  $m_fr{10} = "Octobre";
  $m_fr{11} = "Novembre";
  $m_fr{12} = "Decembre";
 
 
 
  // Declaration du tableau des noms de jours en Anglais
  $j_uk{1} = "Sunday";
  $j_uk{2} = "Monday";
  $j_uk{3} = "Tuesday";
  $j_uk{4} = "Wednesday";
  $j_uk{5} = "Thirsday";
  $j_uk{6} = "Friday";
  $j_uk{7} = "Saturday";
 
 
  // recuperation de la date du jour
  $aujourdhui = getdate();
 
  // Conversion du nom du jour en Francais
  $jour_l=$j_fr{$aujourdhui['wday']};
 
 
  //recuperation du jour en chiffre
  $jour = $aujourdhui['mday'];
 
  //recuperation du mois en chiffre
  $mois = $aujourdhui['mon'];
 
  // Conversion du nom du mois en Francais
  $mois_l = $m_fr{$mois} ;
 
  //recuperation de l'annee`
  $annee = $aujourdhui['year'];
 
  //stockage de la date complete dans la variable $dtfr
  $dtfr = "$jour_l $jour $mois_l $annee";
 
  //retour de cette variable
  return $dtfr;
 
}


function e_dateen(){
 
  // Declaration du tableau des noms de mois en anglais
  $m_en{1} = "January";
  $m_en{2} = "February";
  $m_en{3} = "March";
  $m_en{4} = "April";
  $m_en{5} = "May";
  $m_en{6} = "June";
  $m_en{7} = "July";
  $m_en{8} = "August";
  $m_en{9} = "September";
  $m_en{10} = "October";
  $m_en{11} = "November";
  $m_en{12} = "December";
 
  // Declaration du tableau des noms de jours en Anglais
  $j_en{1} = "Sunday";
  $j_en{2} = "Monday";
  $j_en{3} = "Tuesday";
  $j_en{4} = "Wednesday";
  $j_en{5} = "Thirsday";
  $j_en{6} = "Friday";
  $j_en{7} = "Saturday";
 
  // recuperation de la date du jour
  $aujourdhui = getdate();
 
  // Conversion du nom du jour en anglais
  $jour_l=$j_en{$aujourdhui['wday']};
 
 
  //recuperation du jour en chiffre
  $jour = $aujourdhui['mday'];
 
  //recuperation du mois en chiffre
  $mois = $aujourdhui['mon'];
 
  // Conversion du nom du mois en anglais
  $mois_l = $m_en{$mois} ;
 
  //recuperation de l'annee`
  $annee = $aujourdhui['year'];
 
  //stockage de la date complete dans la variable $dten
  $dten = "$jour_l $jour $mois_l $annee";
 
  //retour de cette variable
  return $dten;
 
}

#now call the function and print the stuff
echo "Voici la date en français: " .f_datefr();

echo "<hr>And now the date in english: " .e_dateen();
echo "<br><pre> should make a lot of exception for writing correctly, another day maybe:

1st - first
2nd - second
3rd - third
And all the other numbers finishing with these figures.
23rd
31st, etc.
eg March 31st, 2005
</pre>";
?>
<!--    $Id: script-nexen.php,v 1.4 2002/11/28 19:45:12 didou Exp $    -->
<!--	script-nexen.php,v 1.5 2001/05/30 13:02:01 pierre Exp	-->
<!--    $Id: db.inc,v 1.24 2003/09/15 12:34:06 dams Exp $    -->
<!--	db.inc,v 1.238 2001/05/30 15:43:51 pierre Exp	-->
<!--	$Id: connectlib.php,v 1.1 2001/11/20 09:04:45 sam Exp $	-->

<?php
/*
 *
 *
 * Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir 
 * qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de 
 * COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE.
 * Elle est librement redistribuable tant que la presente licence, ainsi que les credits des 
 * auteurs respectifs de chaque fonctions sont laisses ensembles. 
 * En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit
 * de l'utilisation ou la mesutilisation de ces fonctions PHP.

*/

/****
 * Titre : Date format MySQL en date Francaise 
 * Auteur : FreeCreator 
 * Email : freecreator59@hotmail.com
 * Url : 
 * Description : Cette fonction permet de convertir une date au format MySQL en date Francaise.

Elle retourne la date en francais
****/
function datefr($date_sql){
// Declaration du tableau des noms de jours en Francais 
  //-------- ici 
  
  
  $j_fr[Sunday]     = "Dimanche"; 
  $j_fr[Monday]     = "Lundi"; 
  $j_fr[Tuesday]     = "Mardi"; 
  $j_fr[Wednesday]    = "Mercredi"; 
  $j_fr[Thursday]    = "Jeudi"; 
  $j_fr[Friday]     = "Vendredi"; 
  $j_fr[Saturday]     = "Samedi"; 
  
  // Declaration du tableau des noms de jours en Francais 
  $m_fr[1]    = "Janvier"; 
  $m_fr[2]    = "Fevrier"; 
  $m_fr[3]    = "Mars"; 
  $m_fr[4]    = "Avril"; 
  $m_fr[5]    = "Mai"; 
  $m_fr[6]    = "Juin"; 
  $m_fr[7]    = "Juillet"; 
  $m_fr[8]    = "Aout"; 
  $m_fr[9]    = "Septembre"; 
  $m_fr[10] = "Octobre"; 
  $m_fr[11] = "Novembre"; 
  $m_fr[12] = "Decembre"; 
  
  $la_date    = explode(' ', $date_sql); // on decompose la date SQL
  $heure_sql= explode(':',$la_date[1]); // On prend la partie heure
  $date_sql    = explode('-',$la_date[0]); // On prend la partie date
  
  
  if (substr($date_sql[1],0,1) == '0' ) // On verifie si le 1er caractere est 0 dans le numero du mois
    {
    // si oui alors on supprime le 1er caractere
    $date_sql[1] = substr($date_sql[1],1,strlen($date_sql[1]) -1);
    }

  $heure = $heure_sql[0]; // La variable de l'heure
  $minutes = $heure_sql[1]; // La variable des minutes
  $secondes = $heure_sql[2]; // la variable des secondes
  
  $annee = $date_sql[0]; // La variable des annees
  $num_mois = $date_sql[1]; // La variable du numero du mois
  $nom_mois = $m_fr[$num_mois]; // La variable du mois en francais
  $num_jour = $date_sql[2]; // Le numero du jour
  $nom_jour = $j_fr[date("l", mktime(0,0,0,$num_mois,$num_jour,$annee))]; // Le nom du jour en francais

#  $date = "Le $nom_jour $num_jour $nom_mois $annee"; // On forme la date
  $date = "$nom_jour $num_jour $nom_mois $annee"; // On forme la date
  $heure = "$heure:$minutes:$secondes"; // On forme l'heure
  
  $date_fr= $date.' à '.$heure;
  
  //retour de cette variable 
  return $date_fr; 
}


?>

pour convertir tout format de temps string → format unix / EPOC

<form method="GET">
<input type=text name=quand>
<input type=submit>
</form>
<?php
$quand=$_GET['quand'];
if($quand==""||!isset($quand)) {
	echo strtotime("now"),"\n";;
}
	echo strtotime($quand),"\n";;
 
?>

example

<!--    $Id: script-nexen.php,v 1.4 2002/11/28 19:45:12 didou Exp $    -->
<!--	script-nexen.php,v 1.5 2001/05/30 13:02:01 pierre Exp	-->
<!--    $Id: db.inc,v 1.24 2003/09/15 12:34:06 dams Exp $    -->
<!--	db.inc,v 1.238 2001/05/30 15:43:51 pierre Exp	-->
<!--	$Id: connectlib.php,v 1.1 2001/11/20 09:04:45 sam Exp $	-->

<?php
/*
 *
 *
 * Avertissement : Cette librairie de fonctions PHP est distribuee avec l'espoir 
 * qu'elle sera utile, mais elle l'est SANS AUCUNE GARANTIE; sans meme la garantie de 
 * COMMERCIALISATION ou d'UTILITE POUR UN BUT QUELCONQUE.
 * Elle est librement redistribuable tant que la presente licence, ainsi que les credits des 
 * auteurs respectifs de chaque fonctions sont laisses ensembles. 
 * En aucun cas, Nexen.net ne pourra etre tenu responsable de quelques consequences que ce soit
 * de l'utilisation ou la mesutilisation de ces fonctions PHP.

*/

/****
 * Titre : Différence entre 2 heures 
 * Auteur : Min's 
 * Email : webmaster@pn-organisation.be
 * Url : 
 * Description : Cette fonction sert à effectuer la différence entre 2 heures formatées hh:mm:ss et renvoie une heure formatée pareillement
****/
function diff_time($t1,$t2){
//Heures au format (hh:mm:ss) la plus grande puis le plus petite

	$tab=explode(":",$t1);
	$tab2=explode(":",$t2);
		
	$h=$tab[0];
	$m=$tab[1];
	$s=$tab[2];
	$h2=$tab2[0];
	$m2=$tab2[1];
	$s2=$tab2[2];	

	if ($h2>$h) {
	    $h=$h+24;
	}	
	if ($m2>$m) {
		$m=$m+60;
		$h2++;
	}
	if ($s2>$s) {
	    $s=$s+60;
		$m2++;
	}
	
	$ht=$h-$h2;
	$mt=$m-$m2;
	$st=$s-$s2;
	if (strlen($ht)==1) {
	    $ht="0".$ht;
	}	
	if (strlen($mt)==1) {
	    $mt="0".$mt;
	}	
	if (strlen($st)==1) {
	    $st="0".$st;
	}	
	return $ht.":".$mt.":".$st;	

}


?>
  • info/myphp/calculer_un_delai_entre_deux_dates.txt
  • Dernière modification : 2026/03/05 09:45
  • de radeff