91 votes

Donné un horodatage Unix, comment obtenir le début et la fin de cette journée ?

J'ai un horodatage Unix comme ceci :

$timestamp=1330581600

Comment puis-je obtenir le début de la journée et la fin de la journée pour cet horodatage ?

e.g.
$beginOfDay = Start of Timestamp's Day
$endOfDay = End of Timestamp's Day

J'ai essayé ceci :

$endOfDay = $timestamp + (60 * 60 * 23);

Mais je ne pense pas que ça marchera parce que l'horodatage lui-même n'est pas le début exact de la journée.

9voto

Cal Points 5474

Vous pouvez utiliser une combinaison de date() et mktime() :

list($y,$m,$d) = explode('-', date('Y-m-d', $ts));
$start = mktime(0,0,0,$m,$d,$y);
$end = mktime(0,0,0,$m,$d+1,$y);

mktime() est assez intelligent pour couvrir des mois/années lorsqu'on lui donne un jour en dehors du mois spécifié (le 32 janvier sera le 1er février, etc.)

4voto

Cameron Points 481

Vous pouvez convertir l'heure en données actuelles, puis utiliser la fonction strtotime pour trouver le début de la journée et ajouter simplement 24 heures à cela pour trouver la fin de la journée.

Vous pouvez également utiliser l'opérateur restant (%) pour trouver le jour le plus proche. Par exemple :

$start_of_day = time() - 86400 + (time() % 86400);
$end_of_day = $start_of_day + 86400;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X