Mktime() - Timestamp classiques (hier, mois dernier, etc.)

Décembre 2016

La fonction mktime() permet de retourner le timestamp UNIX d'une date donnée, c'est-à-dire le nombre de secondes écoulées entre le 1er janvier 1970 et la date en question.

Toutefois, dans son utilisation courante, il est généralement nécessaire de définir deux timestamps pour obtenir une période.

Notez que pour convertir les timestamps ci-dessous en date MySQL (DATETIME), il suffit d'utiliser la fonction date de la manière suivante :

<?
$mysql_datetime = date('Y-m-d H:i:s',$timestamp);
?>


Voici ci-dessous des exemples pour des grands classiques :



24 dernières heures


Le code ci-dessous couvre les 24 dernières heures jusqu'à maintenant :
<?php
$startTime = mktime() - 24*3600;
$endTime = mktime();
?>

Hier (yesterday)


Le code ci-dessous fonctionne y compris si l'on se trouve le 1er du mois, voire le 1er janvier de l'année. Il couvre la période allant d'hier à 00:00:00 à hier 23:59:59 :

<?php
$startTime = mktime(0, 0, 0, date('m'), date('d')-1, date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('d')-1, date('Y'));
?>

Cette semaine (this week)


Le code ci-dessous part du principe que le premier jour de la semaine est le lundi. Il couvre la période allant de lundi matin à 00:00:00 à maintenant :
<?
$startTime = mktime(0, 0, 0, date('n'), date('j'), date('Y')) - ((date('N')-1)*3600*24);
$endTime = mktime(); 
?>

Semaine dernière (last week)


Le code ci-dessous part du principe que le premier jour de la semaine est le lundi. Il couvre la période allant de lundi en 15 à 00:00:00 au dimanche suivant à 23:59:59 :
<?
$startTime = mktime(0, 0, 0, date('n'), date('j')-6, date('Y')) - ((date('N'))*3600*24);
$endTime = mktime(23, 59, 59, date('n'), date('j'), date('Y')) - ((date('N'))*3600*24);
?>

Mois en cours (this month)


Le code ci-dessous couvre la période du 1er du mois à maintenant (mois en cours) :
<?
$startTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
$endTime = mktime();
?>

30 derniers jours (last 30 days)


Le code ci-dessous couvre la période d'il y a 30 jours à maintenant :
<?
$startTime = mktime() - 30*3600*24;
$endTime = mktime();
?>

Mois dernier (last month)


Le code ci-dessous couvre la période du mois dernier :
<?
$startTime = mktime(0, 0, 0, date('m')-1  , 1 , date('Y'));
$endTime = mktime(23, 59, 59, date('m'), date('d')-date('j'), date('Y'));
?>

Année en cours (this year)


Le code ci-dessous couvre la période allant du 1er janvier à 00:00:00 à maintenant :
<?
$startTime = mktime(0, 0, 0, 1, 1, date('Y'));
$endTime = mktime();
?>

Année dernière (last year)


Le code ci-dessous couvre l'année précédente, du 1er janvier à 00:00:00 au 31 décembre à 23:59:59 :
<?
$startTime = mktime(0, 0, 0, 1 , 1, date('Y')-1);
$endTime = mktime(23, 59, 59, 12, 31, date('Y')-1);
?>

A voir également :

Ce document intitulé «  Mktime() - Timestamp classiques (hier, mois dernier, etc.)  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.