给定任何unix-timestamp T,我想获取T之前午夜的时间戳。
所给的时间戳可以是任何整数:现在、今天、(未来不太远)或(过去不太远)。
有没有比下面的伪代码更简洁的方法:
<?php
$midnight = strtotime("{date('d',$ts)}-{date('m',$ts)}-{date('Y', $ts)} midnight");
?>
谢谢。
[*] 在1990年和2020年之间某个时间点。
$midnight = strtotime(date('Y-m-d',$ts).' 00:00:00');
但是,这是否更加干净/更好,存在争议...
一天共有86400秒,因此您应该能够做到以下事情:
$midnight = $ts - $ts%86400;
然而,这并不考虑可能应用于unix时间戳的任何闰秒。
与使用strtotime相比,这样做的性能要好得多,但只有在大量紧密循环的情况下才会有所影响。
就这样
<?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
?>