Tutoriel PHP

PHP

Découvez les bases de PHP dans mon support de formation dédié à ce puissant langage orienté web.


HTML HTML5 CSS Dreamweaver Bootstrap

Fonctions de date PHP

Dans cette première partie, nous allons utiliser des fonctions en PHP permettant d'agir sur les dates .

  • date(), Permet d'afficher une date, l'heure, le numéro de semaine ...
  • mktime(), Permet de récupérer le timestamp à partir d'une date.
  • getdate(), Retourne un tableau associatif contenant les informations de date et d'heure du timestamp (lorsqu'il est fourni, sinon, le timestamp de la date/heure courante)
  • print_r(), Affiche des informations à propos d'une variable, de maniére à ce qu'elle soit lisible. Pour une chaîne, un entier ou un double, la valeur elle même sera affichée
  • strtotime(), Transforme un texte anglais en timestamp
  • datediff(), Permet de faire un calcul entre 2 dates

date()

La fonction date permet d'afficher la date et l'heure sous différents formats.

Caractére Signification Exemples de valeurs possibles :
Jour
j Jour du mois sur deux chiffres sans les zéros initiaux 1 à 31
d Jour du mois sur deux chiffres avec un zéro initial en fonction du jour 01 à 31
l (L minuscule) Jour de la semaine en anglais Sunday à Saturday
w Jour de la semaine au format numérique 0 (dimanche) à 6 (samedi)
z Jour de l'année 0 à 366
Semaine
W Numéro de semaine dans l'année (les semaines commencent le lundi) Exemple : 42 (la 42éme semaine de l'année)
Mois
F Mois, textuel, version longue; en anglais, comme January ou December January à December
m Mois au format numérique, avec zéros initiaux 01 à 12
n Mois sans les zéros initiaux 1 à 12
t Nombre de jours dans le mois 28 à 31
Année
L Est ce que l'année est bissextile 1 si bissextile, 0 sinon.
Y Année sur 4 chiffres Exemples : 1999 et 2003
y Année sur 2 chiffres Exemples : 99 et 03
Heure
a Ante méridien et Post méridien (minuscules) am ou pm
A Ante méridien et Post méridien (majuscules) AM ou PM
g Heure (format 12h) sans les zéros initiaux 1 à 12
G Heure (format 24h) sans les zéros initiaux 0 à 23
h Heure (format 12h) avec les zéros initiaux 01 à 12
H Heure (format 24h) avec les zéros initiaux 00 à 23
s Secondes avec zéros initiaux 00 à 59
i Minutes avec zéros initiaux 00 à 59
I (i majuscule) l'heure d'été est activée ou pas 1 si oui, 0 sinon.  
<?php
echo date("d/m/Y"); // Affiche la date du jour
echo "Il est " . date("H:i:s") ; // Affiche l'heure
?>

Le timestamp PHP

Un timestamp, c'est un nombre.

C'est le nombre de secondes écoulées depuis le 1er Janvier 1970 à Minuit.

Pourquoi depuis le 1er Janvier 1970 à Minuit ? C'est symbolique, il fallait bien prendre un point de départ.

En fait, ça représente le début de l'époque où le systéme d'exploitation Unix a été créé.

Le 1er Janvier 1970 à Minuit, le timestamp avait pour valeur 0. Aujourd'hui, beaucoup beaucoup de secondes se sont écoulées

Pour afficher le timestamp de la seconde actuelle, on utilise la fonction

time()

Afficher le timestamp avec time

<?php
echo time(); //Affiche le nombre de secondes écoulées depuis le 1er janvier 1970
?>

Le timestamp avec la fonction date

Il est possible de fournir un second paramétre à date (aprés les lettres) : le timestamp sur lequel vous voulez obtenir des informations.

Par défaut, date utilise le timestamp actuel : elle renvoie donc l'heure actuelle, le jour actuel etc...
Mais si vous lui donnez un timestamp, elle fera des calculs sur ce moment-là.

Allez, pour faire un test grandeur nature, je vous donne le timestamp qu'il était au moment où j'ai écrit ces lignes

<?php
$timestamp1=1261774471; // Timestamp affiché quand j'ai écris ce cours
echo date('d/m/Y',$timestamp1);
?>

Exemple

Lorsque vous écrirez une news, il vous suffira d'enregistrer juste le timestamp, et vous serez capables grâce à ce nombre de ressortir toutes les infos possibles et imaginables dessus : le jour où la news a été postée, l'heure qu'il était etc...

Récupérer le timestamp à partir d'une date avec mktime

Enfin, une derniére chose qu'il peut être trés utile de savoir faire : vous aimeriez connaître le timestamp qu'il était le 5 Février 1998 à 13h 45min 26s.

Pour récupérer le timestamp correspondant, on va utiliser la fonction mktime. On va lui donner en paramétre une date, et elle va nous ressortir le timestamp correspondant.

 

Cette fonction peut prendre pas mal de paramétres, en voici la liste dans l'ordre :

mktime(heure, minutes, secondes, mois, jour, an, heure d'hiver)

 

Dans la pratique, vous pouvez oublier le dernier paramétre (heure d'hiver) qui ne vous sera pas utile en général.

Sachez qu'il faut mettre 1 si l'heure d'hiver est activée, 0 si elle ne l'est pas.

Mais passons. Si on enléve l'heure d'hiver pour éviter de s'embrouiller, il reste 6 paramétres possibles qu'on retiendra :

Exemple

Je veux toujours le timestamp du 5 Février 1998 à 13h 45min 26s

<?php
$vieux_timestamp = mktime(13, 45, 26, 2, 5, 1998);
echo 'Le timestamp du 05/02/1998 à 13h 45min 26s était : ' . $vieux_timestamp;
?>

getdate()

getdate retourne un tableau associatif contenant les informations de date et d'heure du timestamp (lorsqu'il est fourni, sinon, le timestamp de la date/heure courante), avec les champs suivants :

array  getdate ( int   timestamp )

Clé Description Exemple de valeur retournée
"seconds" Représentation numérique des secondes 0 à 59
"minutes" Représentation numérique des minutes 0 à 59
"hours" Représentation numérique des heures 0 à 23
"mday" Représentation numérique du jour du mois courant 1 à 31
"wday" Représentation numérique du jour de la semaine courante 0 (pour Dimanche) à 6 (pour Samedi)
"mon" Représentation numérique du mois 1 à 12
"year" Année, sur 4 chiffres Exemples: 1999 ou 2003
"yday" Représentation numérique du jour de l'année 0 à 365
"weekday" Version texte du jour de la semaine Sunday à Saturday
"month" Version texte du mois, comme January ou March January à December
0 Nombre de secondes depuis l'époque Unix, similaire à la valeur retournée par la fonction time et utilisée par date . Dépend du systéme, typiquement de -2147483648 à 2147483647 .

print_r()

Affiche des informations à propos d'une variable, de maniére à ce qu'elle soit lisible. Pour une chaîne, un entier ou un double, la valeur elle même sera affichée.

Pour les tableaux, les valeurs seront présentées dans un format qui montre les clés et les valeurs.

Gardez en tête que print_r place le pointeur de tableau à la fin du tableau. Utilisez reset pour le ramener au début.

<?php
$today = getdate();
print_r($today);
?>

Exemple

Array ( [seconds] => 58 [minutes] => 56 [hours] => 14 [mday] => 23 [wday] => 2 [mon] => 4 [year] => 2024 [yday] => 113 [weekday] => Tuesday [month] => April [0] => 1713877018 )

strtotime()

Transforme un texte anglais en timestamp
Retourne un timestamp en cas de succès, FALSE sinon.
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>

Exemple

1713877018
968536800

Ajouter un délai à une date

<?php
$date='2017-05-25';
$date_terminee=date('Y-m-d', strtotime('+1 month', strtotime($date)));
echo $date_terminee;
?>

Exemple

2017-06-25

date_diff()

Permet de faire un calcul entre 2 dates.
<?php
$datetime1 = date_create($date);
$datetime2 = date_create($date_terminee);
$interval = date_diff($datetime1, $datetime2);

echo $interval->format('%R%a days');
?>

Exemple

+31 days

Pratique : une fonction pour traduire la date

<?php
$date_titre=date('Y-m-d');

function DateFr($date_titre){
  $datea1=substr($date_titre,0,4);
  $datem1=substr($date_titre,5,2);
  $datej1=substr($date_titre,8,10);

  return $datej1."/".$datem1."/".$datea1;
}

echo "La date du  ".DateFr($date_titre);
?>

Exercices sur les dates