- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 mySQL 表,其中有 2 列,其中包含日期。 while 循环将它们每个放入一个变量:$start_date 和 $end_date,计算它们之间的时间,并使用 diff() 将其放入新变量 $since_start 中;据我了解,使用 diff() 会产生 DateInterval 类。
现在我想在“while”循环期间生成一个总和并将其存储在 $total_received 变量中。在搜索网络和 stackoverflow 之后,我尝试的最后一件事是
$total_received->add(new DateInterval($since_start));
但这似乎是错误的,因为我没有得到任何输出。我不明白我做错了什么,但说实话,我并不完全知道我在做什么,也不知道还能去哪里寻找。我希望我能通过谷歌找到答案,因为这要快得多,但我不能。希望您能帮忙!
这是完整的循环,其中 $total_received 变量之前定义并随后输出。
//Set variable for lifetime received total
$total_received = 0;
if ($result->num_rows > 0) {
// Output data of each row
while($row = $result->fetch_assoc()) {
echo
$row["id"] ." "
. $row["donor"]." ";
$start_date = new DateTime($row["start"]);
$end_date = new DateTime($row["end"]);
$since_start = $start_date->diff($end_date);
$total_received->add(new DateInterval($since_start));
echo $since_start->format('%h')." Hours ".$since_start->format('%i')." Minutes "
. $row["subject"] ." "
. $row["complete"] ."<br>";
}
} else {
echo "No lifetime received yet";
}
echo $total_received->format('%h')." Hours ".$total_received->format('%i')." Minutes ";
提前非常感谢您!
最佳答案
问题在于:
$total_received = 0
将该变量初始化为数字,该变量没有您稍后使用的 add
方法。 $since_start
已经是 DateInterval
,因此执行 new DateInterval($since_start)
没有多大意义,并且会触发错误您不能将日期间隔添加在一起,而只能将日期间隔添加到日期/时间。因此,使用一些引用日期/时间,并将每个间隔添加到其中。最后,您将引用日期/时间与结果日期/时间进行比较,以获得最终间隔:
// Create the "interval" as a start/end reference date
$ref_start = new DateTime("00:00");
$ref_end = clone $ref_start;
if ($result->num_rows > 0) {
// Output data of each row
while($row = $result->fetch_assoc()) {
echo
$row["id"] ." "
. $row["donor"]." ";
$start_date = new DateTime($row["start"]);
$end_date = new DateTime($row["end"]);
$since_start = $start_date->diff($end_date);
// Move the end date/time of the reference period
$ref_end->add($since_start);
echo $since_start->format('%h')." Hours ".$since_start->format('%i')." Minutes "
. $row["subject"] ." "
. $row["complete"] ."<br>";
}
} else {
echo "No lifetime received yet";
}
// Only now convert the reference period to an interval
$total_received = $ref_start->diff($ref_end);
echo $total_received->format('%h')." Hours ".$total_received->format('%i')." Minutes ";
关于php - 循环内增加 DateInterval,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45488989/
我想从 DateInterval 数组中排除 DateInterval 数组。这是我的代码,但我认为它不会有帮助。有时它会进入无限循环,我无法解决它。 extension DateInterval {
试图从几秒钟内生成简单的“H:i:s”字符串,但不能 例子: $iSecond = 188; $dtF = new DateTime("@0"); $dtT = new DateTime("@$iSe
我有一个 mySQL 表,其中有 2 列,其中包含日期。 while 循环将它们每个放入一个变量:$start_date 和 $end_date,计算它们之间的时间,并使用 diff() 将其放入新变
在我的数据库中,我的day为int。比我得到的 $diff 是 DateTime。 $diff->format("%d"); SELECT * FROM smt WHERE day = $diff 即
我正在使用以下代码: public static function getDays($day, $m, $y) { $days = new DatePeriod( new DateTime
如果我有一个时间格式字符串,如“14:30:00”(“小时:分钟:秒”),我如何从该字符串中获取 DateInterval? 我可以获得一个日期时间: $datetime= DateTime::cre
在玩 PHP 时,我想到了这一点: diff($MarchTheSecond); echo $interval->m.PHP_EOL; // Outputs 0. WTF? $FebruaryTheF
我使用的是 5.4.24 版的 php,我不能使用 DateInterval 类。 我收到此错误:PHP fatal error :找不到“DateInterval”类 $interval
在运行一些测试时,注意到检查 DateInterval 对象的公共(public)属性会返回 false,即使它们包含数据。为什么这是/我们从文档中遗漏了什么? 例子: $currentDate =
尝试获取最后四个星期日,从最近的星期日开始循环递减。 // most recent sunday $mostRecentSunday = new DateTime('last sunday'); //
如何比较两个 DateInterval 对象?像这样的东西: $d1 = new DateInterval("P1M"); $d2 = new DateInterval("P2M"); if($d2
情况/问题 我在 PHP 中遇到 DateInterval 问题。 鉴于以下代码 $interval = new DateInterval("PT6000S"); echo $interval->h;
所以,我减去两个日期: $d = $start->diff($end); 现在我想获取以秒为单位的日期(不是 second 参数)。我知道它可以用本地 Php 函数来完成 - 但它只能在 1970 年
我编写了一些用于输入重复事件的代码。最棘手的部分是用户可以创建一个事件并让它在每 x 周的一周中的选定日期重复。 例如,用户可以选择周一、周三、周五并每 3 周重复一次。 很容易做到,如果每周 - 我
我已经编写了一些用于输入重复事件的代码。最棘手的部分是用户可以创建一个事件并让它在每周的选定日期重复 x 周。 例如,用户可以选择周一、周三、周五,并每 3 周重复一次。 每周 很容易做到 - 我可以
如何在 PHP 中创建瞬间 DateInterval?例如: 0.123456 sec ? DateInterval::__construct 的间隔规范 没有F,也没有f,类似于支持分秒的DateI
我知道这个话题已经很累了,但显然还不够! $temp_d1 = new DateTime(date('Y-m-d', $fromTime)); // 2012-01-01 $temp_d2 = new
我想在我的应用程序中将一些数据存储为字典,与此数据的创建日期相关。它应该看起来像这样: // hours [ 17:00 - 18:00 : 34.5, 18:00 - 19:00 : 41.2,
当我使用 DateInterval 类时,它返回一个名为“d”的属性,然后返回另一个名为“Days”的属性,我真的很困惑这两者之间的区别。有人可以解释一下吗。 下面是我的代码中返回的对象的示例。 Da
所以我花了很多时间研究如何最好地将重复事件添加到我的日历应用程序。 我想使用 PHP DateInterval 函数并编写了下面的代码来尝试找出如何根据原始事件 Start Date、Finish D
我是一名优秀的程序员,十分优秀!