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

时间:2011-11-03 11:23:14

标签: php timestamp

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

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

那么(伪代码)是否更清洁:

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

感谢。

[*]介于1990年至2020年之间。

3 个答案:

答案 0 :(得分:6)

我会这样做

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

......但这是否更清洁/更好是有争议的......

答案 1 :(得分:3)

由于整天是86400秒,您应该可以这样做:

$midnight = $ts - $ts%86400;

但是,这不会考虑可能已应用于unix时间戳的任何闰秒。

这比使用strtotime要高得多,但是如果你在大的紧密循环中这样做可能会很重要。

答案 2 :(得分:1)

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
?>
相关问题