【问题标题】:Php, add and subtract timestamps, get minutesphp,加减时间戳,获取分钟
【发布时间】: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()”显示时间,但它会变为空白。 (虽然它适用于回声)。所以我想我毕竟可以用时间戳来计算,谢谢!

标签: php datetime timestamp


【解决方案1】:

我认为你不需要实例化 DateTime 并使用“->diff”方法,因为你已经有了时间戳(我可以看到你正在使用setTimestamp

<?php
    $length = ($endtime2nd - $starttime2nd) + ($endtime - $starttime);

    echo round(abs($length / 60), 2). " minute";
?>

【讨论】:

  • 不,时间来自 strtotime() 时间戳
【解决方案2】:

你可以像这样得到总分钟数。

$min = $length->d * 24 * 60;
$min = $min + $length->h * 60;
$min = $min + $length->m;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-13
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-04
    • 2021-07-25
    相关资源
    最近更新 更多