【发布时间】:2018-02-22 10:19:43
【问题描述】:
我需要从以下几个时间戳中获取不同的时间长度(以分钟为单位):
- 开始时间
- 结束时间
- starttime2nd
- endtime2nd
编辑:澄清: 每个时间最初都存储为日期时间字符串,如
"2018-02-21T19:45:13+00:00"。
我把它转换成strtotime("2018-02-21T19:45:13+00:00");
从中我得到一个时间戳:1519242313
似乎我不能使用加号或减号运算符来添加或减去时间戳,例如:
$length = ($endtime2nd - $starttime2nd) + ($endtime - $starttime)
我是否需要实例化 DateTime 并使用“->diff”方法来获取时间间隔?
我可以通过这样做得到一个时间间隔:
$date1 = new DateTime();
$date2 = new DateTime();
$starttime= $date1->setTimestamp($starttime);
$endtime= $date2->setTimestamp($endtime);
$length = $endtime->diff($starttime);
这是否意味着我需要实例化 四个 DateTimes 以获得总长度,并设置四个时间戳,然后为两个时间间隔获取“->diff”,然后使用添加它们DateTime方法的“->add”方法?
我想知道有没有更简单的方法?
【问题讨论】:
-
“我似乎无法使用加号或减号运算符来加减时间戳” 您是如何得出这个结论的?如果它是一个简单的 unix 时间戳(作为一个数字),那么没有什么可以阻止您对这些值使用简单的数学运算。你有没有
var_dumped 他们看看他们是什么类型的? -
如果我取时间戳并执行 $t4 - $t3 我得到 0。另一方面,如果我只取字符串 1519245110 - 1519242313,它似乎确实有效。我不知道为什么在将它们计算为 timestamps(?) 时得到 0 。我如何像字符串一样使用它们?
-
我猜你没有显示你的整个代码。现在它很简单。如果您有两个包含数字的变量,则可以对它们进行数学运算。 3v4l.org/5sE46 如果这似乎不适合您,那么您的变量不是您认为的那样。
-
或者更直接的例子:3v4l.org/3lg0D
-
好的,我在 phpfiddle 上的测试代码出错了,最初我在使用 die($t4 - $t3) 进行测试时没有得到任何东西。我认为它会使用“die()”显示时间,但它会变为空白。 (虽然它适用于回声)。所以我想我毕竟可以用时间戳来计算,谢谢!