Ceci est une ancienne révision du document !
PHP dates
pfoah les dates c'est compliqué, mais php peut aider!
calculer un délai entre deux dates
<?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>"; ?>
date-il-y-a-15-jours
<?
/* 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;
}
}
?>
date-fr-easy
<?
setlocale(LC_TIME, "fr");
echo "Mise à jour: ",strftime("%A %d %B %Y", getlastmod());
?>
date-fr complet
<?
/*
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>";
?>