【问题标题】:PHP time not converting/saving correctlyPHP时间没有正确转换/保存
【发布时间】:2020-06-04 08:58:05
【问题描述】:

这里可能是一个简单的想法,虽然已经没有想法了!

我有一个简单的时间计算方法;

$total_hours_work_cal = ($end_time_name - $start_time_name - $total_break_name);

这确实会带回正确的值,例如:

  • 开始时间 = 08:00
  • 结束时间 = 12:00

返回的值为 4,我希望将其保存为 04:00,尽管它只是将其保存为 4,然后在我的数据库中显示为 00:00:04.000000。

我需要它在数据库中显示为 04:00:00.000000,但我终生无法弄清楚。

有什么想法吗?

编辑

$startTime = new DateTime("$start_time_name");
$endTime = new DateTime("$end_time_name");
$endTime->sub(date_interval_create_from_date_string("$total_break_name"));
$interval = date_diff($endTime, $startTime);
echo $interval->format('%H:%I:%S'), PHP_EOL;

对此的计算是;

  • 结束时间 = 10:00
  • 开始时间 = 05:00
  • 休息时间 = 00:30

但它只返回 05:00 而不是预期的 04:30

【问题讨论】:

  • 4 小时 != 4 秒。
  • 抱歉,不知道你要向我解释什么,Markus!
  • 值 4 表示秒,而不是 4 小时。将秒乘以 3600 得到小时。
  • 感谢您的支持,但请标记“答案为正确”。
  • 抱歉,Markus,我以为我做到了 - 现在完成了,再次感谢!

标签: php date time


【解决方案1】:

值 4 表示秒,而不是 4 小时。将秒乘以 3600 得到小时。

但你最好使用 PHP 内部日期函数。

$startTime = new DateTime('08:00');
$endTime = new DateTime('12:00');
$endTime->sub(date_interval_create_from_date_string('10 minutes'));
$interval = date_diff($endTime, $startTime);
echo $interval->format('%H:%I:%S'), PHP_EOL;

$startTime = new DateTime('08:00');
$endTime = new DateTime('12:30');
$endTime->sub(date_interval_create_from_date_string('15 minutes'));
$interval = date_diff($endTime, $startTime);
echo $interval->format('%H:%I:%S'), PHP_EOL;

03:50:00
04:15:00

以中断时间作为时间字符串更新

我们取结束时间并从中减去休息时间。从剩下的部分中减去开始时间,得到有效工作时间。

$startTime = new DateTime('08:00');
$endTime = new DateTime('12:30');
$breakTime = new DateTime('00:15');

$breakSubtracted = new DateTime($endTime->diff($breakTime)->format('%H:%I:%S'));
$workTime = date_diff($breakSubtracted, $startTime)->format('%H:%I:%S');
echo $workTime;

04:15:00

【讨论】:

  • 这很好用,Markus,非常感谢 - 你可能知道为什么它没有考虑到 0:10 的休息时间吗?它在计算时不减去 0:10
  • 感谢 Markus,尽管每当我添加新的 DateTime 时,它​​都会破坏整个代码,没有任何更新或运行 - 有什么想法吗?
  • 请举个例子。我的回答考虑了您的问题背景。
  • 我已对我原来的问题进行了编辑,以向您展示您的解决方案为我返回了什么(似乎新的 DateTime 现在正在工作?)
  • 非常感谢 Markus,我已将此标记为答案!
猜你喜欢
  • 2014-10-22
  • 2021-05-29
  • 2015-08-27
  • 2017-02-14
  • 2014-06-17
  • 2011-10-17
  • 2021-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多