Php 获取最近七天的开始和结束时间戳

Php 获取最近七天的开始和结束时间戳,php,date,timestamp,Php,Date,Timestamp,我尝试在PHP中将其作为UNIX时间戳输出: 05-30-2014 0:00:00 05-30-2014 23:59:59 05-29-2014 0:00:00 05-29-2014 23:59:59 05-28-2014 0:00:00 05-28-2014 23:59:59 05-27-2014 0:00:00 05-27-2014 23:59:59 05-26-2014 0:00:00 05-26-2014 23:59:59 05-25-2014 0:00:00 05-25-2014 23

我尝试在PHP中将其作为UNIX时间戳输出:

05-30-2014 0:00:00
05-30-2014 23:59:59
05-29-2014 0:00:00
05-29-2014 23:59:59
05-28-2014 0:00:00
05-28-2014 23:59:59
05-27-2014 0:00:00
05-27-2014 23:59:59
05-26-2014 0:00:00
05-26-2014 23:59:59
05-25-2014 0:00:00
05-25-2014 23:59:59
05-24-2014 0:00:00
05-24-2014 23:59:59
这应该是动态的,并始终显示前七天

所以,我试图把过去七天的开始和结束作为时间戳

$timestamp = time()- 3600 * 24;
for ($i = 0 ; $i < 7 ; $i++) {
    echo date('Y-m-d 00:00:00', $timestamp) .'<br />';
    echo date('Y-m-d 23:59:59', $timestamp) .'<br />';  
    $timestamp -= 24 * 3600;
}
我能够得到输出的日期,但当包括时间和转换为时间戳时,我认为这是一团糟

编辑

到目前为止,我已经有了这个,它让我得到了正确的开始日期和时间,但这需要转换成一个时间戳

$timestamp = time()- 3600 * 24;
for ($i = 0 ; $i < 7 ; $i++) {
    echo date('Y-m-d 00:00:00', $timestamp) .'<br />';
    echo date('Y-m-d 23:59:59', $timestamp) .'<br />';  
    $timestamp -= 24 * 3600;
}
$timestamp=time()-3600*24;
对于($i=0;$i<7;$i++){
回显日期('Y-m-d 00:00:00',$timestamp)。“
”; 回音日期('Y-m-D23:59:59',$timestamp)。'; $timestamp-=24*3600; }
当我尝试将其更改为时间戳,然后使用在线转换器反转时间戳时,它总是关闭5小时。例如,我获取了给定日期午夜的时间戳,并在在线转换器中检查它是否正确,但它显示的是凌晨5点而不是午夜

$date = new DateTime();
for($i = 0; $i < 7; $i++) {
    $date->modify("last day");
    $date->setTime(0,0,0);
    echo $date->getTimestamp() . "<br/>\n";
    $date->setTime(23,59,59);
    echo = $date->getTimestamp() . "<br/>\n";
}
并设置您想要的时区,而不是
欧洲/阿姆斯特丹

编辑2

你自己编辑的代码也没那么糟糕。只需添加
strotime()
即可将日期字符串转换为时间戳:

$timestamp = time()- 3600 * 24;
for ($i = 0 ; $i < 7 ; $i++) {
    echo strtotime(date('Y-m-d 00:00:00', $timestamp)) .'<br />';
    echo strtotime(date('Y-m-d 23:59:59', $timestamp)) .'<br />';  
    $timestamp -= 24 * 3600;
}
$timestamp=time()-3600*24;
对于($i=0;$i<7;$i++){
echo strotime(日期('Y-m-d 00:00:00',$timestamp))。
; echo strotime(日期('Y-m-d23:59:59',$timestamp))。
; $timestamp-=24*3600; }
不要害怕在线转换器所说的话。在线转换器可能位于不同的时区。

$start\u timestamp=mktime(0,0,0,日期(“m”)、日期(“d”)、日期(“y”);
$start_timestamp = mktime(0, 0, 0, date("m"), date("d"), date("y"));

$end_timestamp = $start_timestamp+86399;

//run it 7 times
for ($x=0; $x<7; $x++) {
    $start_timestamp = (int) $start_timestamp - 86400;
    $end_timestamp = $start_timestamp+86399;

    echo $end_timestamp."<br />".$start_timestamp."<br />";
} 
$end_timestamp=$start_timestamp+86399; //运行它7次
对于($x=0;$x我需要的是每天的第一秒和最后一秒。因此,给定一天的两个时间戳应该覆盖该天的每一秒。什么在线转换器?可能是错误的。@SherwinFlight感谢您添加当前代码。请检查我答案的第二次编辑。@SherwinFlight不客气。我将代码修改为不再使用多个DateTime对象。