2011-11-03 109 views
4

考虑任何UNIX的时间戳t之前取午夜的时间戳,我想T.给定的时间戳

之前获取午夜的时间戳的给定时间戳可以是任意整数:现在也,今天(未远[])或者(不太远[])。

有那么一个更清洁的方式(伪):

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

感谢。

[*] 1990年的地方和

回答

6

我会做它作为

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

...但是这是否是清洁剂/越好有争议...

+0

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

1

的Et瞧”到2020年之间

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

因为一整天是86400秒,你应该可以这样做:

$midnight = $ts - $ts%86400; 

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

这会比使用strtotime更多的性能,但可能只是如果你要在严格的循环中做到这一点很重要。

相关问题