Php 获取最近七天的开始和结束时间戳
我尝试在PHP中将其作为UNIX时间戳输出: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
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对象。