【问题标题】:Subtracting two different times in PHP在 PHP 中减去两个不同的时间
【发布时间】:2011-08-19 00:21:16
【问题描述】:

这似乎是一个相当简单的问题,但我遇到了麻烦!

在我的数据库中,我有两个包含时间的字段。假设一个名为 clockin 的字段显示为“下午 2:29:39”,而另一个名为 clockout 的字段显示为“下午 2:29:39”。

然后我还有另外两个字段,一个标题为“breakin”,显示为 2:28:37 pm,breakout 显示为“2:28:55 pm”。

我想从 break in 中减去 breakout 以获得差值,然后取该数字并从时钟输入和时钟输出之间的差值中减去它。

我该怎么做?这是我尝试过的:

$clockout = new DateTime($row['clockout']);
$clockin = new DateTime($row['clockin']);



$diff = $clockout->diff($clockin);

$on_the_clock = sprintf('%d hours, %d minutes, %d seconds', $diff->h, $diff->i, $diff->s);


$breakin = new DateTime($row['breakin']);
$breakout = new DateTime($row['breakout']);

$diff2 = $breakout->diff($breakin);
$break = sprintf('%d hours, %d minutes, %d seconds', $diff2->h, $diff2->i, $diff2->s);

这给了我两个区别,但是我不知道如何从另一个中减去一个。

感谢您的帮助!

【问题讨论】:

    标签: php date time


    【解决方案1】:

    我已经使用 strtotime() 来解决此类问题。它以 Unix 时间戳的形式生成纯数字值。我对 DateTime() 没有经验,但我更喜欢 Unix 时间戳,因为它表示秒数,并且可以在必要时使用 date() 转换回字符串或用户友好的格式。

    我发现在数据库中存储 Unix 时间戳也更容易操作。在需要向用户显示之前,不需要用户友好的格式。

    [http://php.net/manual/en/function.strtotime.php][1]

    【讨论】:

      【解决方案2】:

      从您现有的代码来看,我假设您运行的 PHP > 5.3 和 DateTime 类。

      在这种情况下,请查看DateTime->sub()。您可以使用它从 clock out 中减去从 break 返回的 DateInterval。然后做 clock inclock out 之间的区别。这将为您提供总工作时间。

      【讨论】:

      • 嗯。我仍然对此感到困惑。我已经在我的代码中这样做以创建两个时间差异,但是我不确定如何获得这些差异之间的差异。 :s
      • 你能给我看看示例代码吗?我似乎无法解决这个问题。 :\
      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 2016-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 1970-01-01
      相关资源
      最近更新 更多