Informatique


php et le temps

time()

time() crée un horodateur, il s'agit du temps UNIX, le nombre de secondes qui nous séparent du 1er janvier 1970 à 0H0M0S

Le timestamp (unix) désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise.
Les avantages:
  • facilite la comparaison de date, puisque ca revient a faire une difference entre 2 nombres
  • gérer par tous des langages et SGBD
  • universel, puisque pas de notion de fuseaux horaires
Les inconvenients :
  • le nombre en lui-même n'est pas parlant pour un humain, obligation de passer par un convertisseur
  • ne gère pas (nativement) avant 1970, donc pour gérer les dates de naissances par exemple, ce n'est pas l'idéal
Syntaxe
	int time ( void )
	
Démo
<?php
	$temps=time();
	echo "Nombre de secondes depuis le 01/01/1970 à 0H0M0S: ".$temps;
?>

date()

date() permet d'extraire des informations concernant l'horodateur passé en paramètre, la méthode retourne une chaîne de caractères et admet 2 paramètres: les informations à extraire ($format) et un horodateur ($timestamp).

Cliquer ici pour découvrir le tableau complet.

Syntaxe
string date ( string $format [, int $timestamp = time() ] )
Démo
<?php
$madate=date("d.m.Y",time());
echo "Nous sommes le ".$madate;
?>

getdate()

getdate() retourne un tableau associatif contenant les informations de date et d'heure de l'horodateur ($timestamp) lorsqu'il est fourni, sinon, le timestamp de la date/heure courante.

Cliquer ici pour découvrir le tableau complet.

Syntaxe
array getdate ([ int $timestamp = time() ] )
Démo
<?php
$jour=getdate();
echo "Nous sommes $jour[weekday] $jour[mday] $jour[month] $jour[year]";
?>

checkdate()

checkdate() retourne true si la date existe et false si elle n'existe pas. La méthode accepte trois paramètres:

  • un entier pour le mois, de 1 à 12
  • un entier pour le jour, avec contrôle des années bisextiles
  • un entier pour l'année, entre 1 et 32767 inclus

Syntaxe
bool checkdate ( int $month , int $day , int $year)
Démo
<?php
$testdate=array("jour"=>17,"mois"=>5,"an"=>1962);
$flag=checkdate($testdate['mois'],$testdate['jour'],$testdate['an']);
var_dump($flag);
?>

mktime()

mktime() crée un horodateur pour une date particulière. Il s'agit du timestamp UNIX, le nombre de secondes qui séparent du 1er janvier 1970 à 0H0M0S de la date saisie dans le mktime()

Syntaxe
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n")
 [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )	

La méthode accepte sept paramètres:

  • $hour, un entier représentant l'heure du jour
  • $minute,un entier représentant la minute de l'heure du jour
  • $second, un entier représentant la seconde de la minute de l'heure du jour
  • $month, un entier représentant le mois (1 à 12)
  • $day, un entier représentant le jour du mois (1 à 28, 29, 30, 31)
  • $year, l'année, peut être sur quatre chiffres (1901 à 2038).
  • $is_dst, Ce paramètre peut être mis à 1 si l'heure d'hiver est appliquée (DST), 0 si elle ne l'est pas, et -1 (par défaut) si on ne sait pas (attention, cela peut donner des résultats inattendus)

Démo
<?php
$temps=mktime(0,0,0,5,17,1962);// un entier négatif
var_dump($temps);
$temps=mktime(1,0,0,1,1,1970); // le pivot: 0
var_dump($temps);
$temps=mktime(1,0,1,1,1,1970); // 1
var_dump($temps);
$temps=mktime(0,0,0,7,30,2002); //un entier positif
var_dump($temps);
?>

Concernant la valeur pivot, le fait d'avoir mis 1 pour les heures est normal! Car on est bien à la première heure, mais à son début: 0 minute 0 seconde.
Si on met 0, on obtiendra -3600, on est bien 1h avant le 01/01/1970.