Php 在给定时间戳之前获取午夜的时间戳

Php 在给定时间戳之前获取午夜的时间戳,php,timestamp,Php,Timestamp,给定任何unix时间戳T,我想获取T之前午夜的时间戳 给定的时间戳可以是任何整数:现在、今天、将来(不太远[])或过去(不太远[]) 有没有更干净的方法(伪代码): 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);

给定任何unix时间戳T,我想获取T之前午夜的时间戳

给定的时间戳可以是任何整数:现在、今天、将来(不太远[])或过去(不太远[])

有没有更干净的方法(伪代码):

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
?>

我会按照你的意愿去做

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

…但这是否更干净/更好仍有争议…

由于一整天是86400秒,您应该能够做到:

$midnight = $ts - $ts%86400;

但是,这不会考虑任何可能应用到UNIX时间戳的跳跃秒。


这将比使用strotime有更高的性能,但可能只有在大的紧密循环中才能起作用。

谢谢。我担心通过Strotime的路线是唯一“务实”的方法。你的是其中最干净的。
$midnight = $ts - $ts%86400;