不,这不是日期之间的标准+86400秒。PHP中两个unix时间戳之间的实际天数
$start_time = strtotime("2012-01-15 23:59");
$end_time = strtotime("2012-01-16 00:05");
$ daysInBetweenTimestamps =?
这就是我目前面临的问题,因为时间戳可能介于5分钟到5小时之间,例如使用标准+86400来查看它是否超过一天不会工作,并且由于我在做的大量索引我想看看是否有更有效的方法来检查新的一天是否已经开始,而不是在第二级上执行日期(“d”)> $ prevDay。
与测试更新为第一个例子:
echo "Absolute Start: ".date("Y-m-d H:i:s",$start)."<br />";
echo "Absolute End: ".date("Y-m-d H:i:s",$end)."<br />";
echo "Interval Used: $interval(seconds) OR ".($interval/60)."(minutes)<br />";
$numberOfIntervals = ceil(($end - $start)/$interval);
echo "Number of intervals:$numberOfIntervals<br /><br />";
if ($numberOfIntervals > 0){
for ($i = 0; $i < $numberOfIntervals; $i++){
$curStart = $start + ($interval * $i);
$curEnd = $curStart + $interval;
if ($curEnd > $end){$curEnd = $end;}
echo "Interval Start DateTime: ".date("Y-m-d H:i:s",$curStart)."<br />";
echo "Interval End DateTime: ".date("Y-m-d H:i:s",$curEnd)."<br />";
/* EXAMPLE PHP5.3 DateTime START - NOT WORKING */
$startDiff = new DateTime("@$curStart");
$endDiff = new DateTime("@$curEnd");
$diff = $startDiff->diff($endDiff);
echo $diff->format("%a") . " days<br />";
if ($diff->format("%a") > 0){
/* EXAMPLE PHP5.3 DateTime END */
/* EXAMPLE Julian START - WORKS */
$days = unixtojd($curEnd) - unixtojd($curStart);
echo "Number of days:$days<br />";
if ($days > 0){
/* EXAMPLE Julian END */
// Multiple days so the log files are split
echo "Multiple days so log files are split<br />";
}else{
echo "Single day so log files are NOT split<br />";
}
}
}
输出如下所示:
Absolute Start: 2012-01-25 23:59:00
Absolute End: 2012-01-26 00:02:00
Interval Used: 180(seconds) OR 3(minutes)
Number of intervals:1
Interval Start DateTime: 2012-01-25 23:59:00
Interval End DateTime: 2012-01-26 00:02:00
===实施例1个START ===
0 days
Single day so log files are NOT split
我只是缺少差异的东西?
===实施例1 END ===
===实施例3 START ===
Number of days:1
Multiple days so log files are split
===实施例3 END ===
如果没有经过86400秒的时间,您没有告诉我们两个时间戳之间的天数是多少。你想给你的例子日期输出什么。准确地说明问题。 – 2012-01-27 15:22:30
获取日期的一种方法是在开始和结束时进行测试,例如:if(date(“d”,$ end_time)> date(“d”,$ start_time)){$ multiDays = true;} '然后做每一天的最后一秒计数和它们之间的循环,这是最有效的方法吗?' – 2012-01-27 15:25:56
所以问题是这样的... Apache日志文件每天轮换并以access_log.2012.11.15格式保存,我的索引器应用程序需要一个unix时间戳开始和结束时间。这可能会跨越多天。与其让php手动读取整个文件,我使用unix工具* exec *命令为我完成这项工作...因此,在我的for循环中,我需要找到一种方法来捕捉是否需要改变几天来查看新的日志文件。不使用php读取这些日志文件的原因是其中一些是2 + gig的大小和php有256mb,所以我尝试在一个小的用户定义的时间范围内索引 – 2012-01-27 15:30:31