为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 时间无法正确转换/保存

PHP 时间无法正确转换/保存

PHP
慕村225694 2023-04-28 16:33:07
虽然没有想法,但这里可能是一个简单的!我有一个简单的时间计算;$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
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

值 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


查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 95 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信