PHP 中减去时间

发布于 2024-10-27 02:15:38 字数 176 浏览 7 评论 0原文

我已经寻找答案几个小时了,但找不到。

我正在编写一个简单的脚本。用户设置工作开始和结束时间。例如,某人从 8:00 工作到 16:00。 我怎样才能减去这个时间来看看这个人已经工作了多长时间?

我正在尝试 strtotime(); 但没有成功......

I have been looking for an answer for a few hours now, but I can't find one.

I'm writing a simple script. The user sets their work start and end time. So, for example, somebody is working from 8:00 to 16:00.
How can I subtract this time to see how long the person has been working?

I was experimenting with strtotime(); but without success...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

時窥 2024-11-03 02:15:38

更好一点的是:

$a = new DateTime('08:00');
$b = new DateTime('16:00');
$interval = $a->diff($b);

echo $interval->format("%H");

这将为您提供小时数的差异。

A bit nicer is the following:

$a = new DateTime('08:00');
$b = new DateTime('16:00');
$interval = $a->diff($b);

echo $interval->format("%H");

That will give you the difference in hours.

硬不硬你别怂 2024-11-03 02:15:38

如果您获得有效的日期字符串,则可以使用此:

$workingHours = (strtotime($end) - strtotime($start)) / 3600;

这将为您提供一个人的工作时间。

If you get valid date strings, you can use this:

$workingHours = (strtotime($end) - strtotime($start)) / 3600;

This will give you the hours a person has been working.

可可 2024-11-03 02:15:38

另一种解决方案是检查 Unix 时间戳整数值差异(以秒为单位)。

<?php
    $start = strtotime('10-09-2019 12:01:00');
      $end = strtotime('12-09-2019 13:16:00');

      $hours = intval(($end - $start)/3600);
      echo $hours.' hours'; //in hours

      //If you want it in minutes, you can divide the difference by 60 instead
      $mins = (int)(($end - $start) / 60);
      echo $mins.' minutues'.'<br>';
?>

如果您的原始日期以 Unix 时间戳格式存储,则此解决方案会更好。

Another solution would be to go through the Unix-timestamp integer value difference (in seconds).

<?php
    $start = strtotime('10-09-2019 12:01:00');
      $end = strtotime('12-09-2019 13:16:00');

      $hours = intval(($end - $start)/3600);
      echo $hours.' hours'; //in hours

      //If you want it in minutes, you can divide the difference by 60 instead
      $mins = (int)(($end - $start) / 60);
      echo $mins.' minutues'.'<br>';
?>

This solution would be a better one if your original dates are stored in Unix-timestamp format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文