获取给定时间戳前一天的午夜时间戳

4

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

所给的时间戳可以是任何整数:现在、今天、(未来不太远)或(过去不太远)。

有没有比下面的伪代码更简洁的方法:

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

谢谢。

[*] 在1990年和2020年之间某个时间点。

3个回答

6
我会这样做:
$midnight = strtotime(date('Y-m-d',$ts).' 00:00:00');

但是,这是否更加干净/更好,存在争议...


谢谢。我担心通过strtotime的路线是唯一“实用”的方法。你的方法是最干净的。 - berkes

3

一天共有86400秒,因此您应该能够做到以下事情:

$midnight = $ts - $ts%86400;

然而,这并不考虑可能应用于unix时间戳的任何闰秒。

与使用strtotime相比,这样做的性能要好得多,但只有在大量紧密循环的情况下才会有所影响。


1

就这样

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接