给定任何unix-timestamp T,我想在T之前获取午夜的时间戳。
给定的时间戳可以是任何整数:现在,今天,(不太远[])将来或(过去不太远[])。
那么(伪代码)是否更清洁:
<?php
$midnight = strtotime("{date('d',$ts)}-{date('m',$ts)}-{date('Y', $ts)} midnight");
?>
感谢。
[*]介于1990年至2020年之间。
答案 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
?>