Découvez les bases de PHP dans mon support de formation dédié à ce puissant langage orienté web.
Dans cette première partie, nous allons utiliser des fonctions en PHP permettant d'agir sur les dates .
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
?>
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()
<?php
echo time(); //Affiche le nombre de secondes écoulées depuis le 1er janvier 1970
?>
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...
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 :
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 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 . |
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
<?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
1737176464
<?php
$date='2017-05-25';
$date_terminee=date('Y-m-d', strtotime('+1 month', strtotime($date)));
echo $date_terminee;
?>
Exemple
<?php
$datetime1 = date_create($date);
$datetime2 = date_create($date_terminee);
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>
Exemple
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);
?>