Получить метку времени полуночи перед данной меткой времени - PullRequest
4 голосов
/ 03 ноября 2011

Учитывая любую метку времени unix T, я хочу получить метку времени полуночи перед T.

Данная метка времени может быть любым целым числом: сейчас, сегодня (не слишком далеко [])в будущем или (не слишком далеко []) в прошлом.

Есть ли более чистый способ (псевдокод):

<?php
$midnight = strtotime("{date('d',$ts)}-{date('m',$ts)}-{date('Y', $ts)} midnight");
?>

Спасибо.

[*] где-то между 1990 и 2020 годами.

Ответы [ 3 ]

6 голосов
/ 03 ноября 2011

Я бы сделал это как

$midnight = strtotime(date('Y-m-d',$ts).' 00:00:00');

... но спорны ли это чище / лучше ...

3 голосов
/ 03 ноября 2011

Поскольку полный день составляет 86400 секунд, вы должны быть в состоянии сделать это:

$midnight = $ts - $ts%86400;

Однако это не будет учитывать любые дополнительные секунды, которые могли бы быть применены к метке времени Unix.

Это было бы намного эффективнее, чем использование strtotime, но, вероятно, имело бы значение, только если бы вы делали это в больших узких циклах.

1 голос
/ 03 ноября 2011

Et voila '

<?php    
$midnight = strtotime(date('d-m-Y',$ts));
echo date('d-m-Y H:i:s',$ts);       // output 03-11-2011 12:43:41
echo date('d-m-Y H:i:s',$midnight); // ouput 03-11-2011 00:00:00
?>
...