PHP - 使用日期/时间的操作
我正在尝试使用日期/时间php函数。我想做基本的算术运算(加法,减法......)。我已经读过,有各种功能可以做到这一点。PHP - 使用日期/时间的操作
我以DateTime和date_diff开头。
<?php
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$result = date_diff($time1, $time2)->format('H:i:s');
echo $result;
?>
后运行它,它显示:
请你能帮我吗?
的最佳方式将是面向对象:
$time1 = DateTime::createFromFormat('H:i:s', '08:10:20');
$time2 = DateTime::createFromFormat('H:i:s', '10:02:30');
$interval = $time1->diff($time2);
echo $interval->format('%H:%i:%s'); // print 01:52:10
我使用程序的过程非常不鼓励:
date_diff($time1, $time2);
使用面向对象尽可能:
$interval = $time1->diff($time2);
我希望它能帮助
它工作正常!谢谢!你能解释我的表达式:'DateTime :: createFromFormat – ruzD
你试图创建日期从:“08:10:20”,但你需要定义在哪种格式你给日期(或在你的情况下的时间)。所以你需要使用createFromFormat()函数,并给出第一个参数作为你用来给你的日期或时间的格式,例如:H:i:s, 例如,如果你给日期,例如:30-08-2016 12:52:08,你的格式是:dmY H:i:s,你会使用: $ time1 = DateTime :: createFromFormat('dmY H:i:s','30 -08-2016 12:52 :08' );等等。 – Learner
你正在使用错误的格式字符串
尝试
format('H:i:s')
编辑后:
试试这个
<?php
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$result = date_diff($time1, $time2)->format('%h:%i:%s');
echo $result;
?>
试试这个@ruzD ....现在它的工作 –
现在是,它的工作原理! – ruzD
检查这个代码
<?php
$datetime1 = new DateTime('08:10:06')->format('HH:MM:SS');
$datetime2 = new DateTime('08:10:06')->format('HH:MM:SS');
$interval = $datetime1->diff($datetime2);
echo $interval->format('HH:MM:SS');
?>
同样的错误结果:( – ruzD
date_diff
将返回一个DateInterval
对象。你可以阅读here,你可以格式参数中使用的字符:
$result = date_diff($time1, $time2)->format('%H:%i:%s');
每个格式字符必须由一个百分号(%)前缀。
它确实有效并且正确的答案,但是总是推荐使用面向对象的方法,而不是使用程序过程:date_diff($ time1,$ time2);我们应该尽可能多地使用面向对象尽可能:$ interval = $ time1-> diff($ time2); – Learner
为什么?你到底在说什么? – Federkun
对于那些没有程序和OOP区别的人: 我相信你不熟悉面向对象的程序设计(OOP)请阅读我在正常搜索中找到的有关“Procedural”和“OOP”编程差异之间的澄清的文章,因为我没有时间解释: https://www.sitepoint.com/community/t/php-procedural-vs-object-oriented/33753 – Learner
嗨使用此$result = $time2->diff($time1)->format('%h:%i:%s');
或date_diff($time1, $time2)->format('%h:%i:%s');
$time1 = new DateTime ('08:10:20');
$time2 = new DateTime ('10:02:30');
$time1->format('H:i:s');
$time2->format('H:i:s');
$result = $time2->diff($time1)->format('%h:%i:%s');
echo $result;
输出
1:52:10
从docs:
每个格式字符必须以百分号(%)
$time1 = new DateTime('08:10:20');
$time2 = new DateTime('10:02:30');
$interval = $time1->diff($time2);
echo $interval->format('%h:%i:%s');
使用这个代码前缀来查找秒differnce。你也可以根据你的需要使用它来处理日期时间参数。
<?php
function secondsConverter($dateTime1,$dateTime2)
{
$hour=abs($dateTime1['hour']-$dateTime2['hour'])*3600;
$minutes=abs($dateTime1['minute']-$dateTime2['minute'])*60;
$seconds=abs($dateTime1['second']-$dateTime2['second']);
return $hour+$minutes+$seconds;
}
$dateTime1=date_parse("10:00:00.5");
$dateTime2=date_parse("11:00:00.5");
echo secondsConverter($dateTime1,$dateTime2);
?>
试图改变'格式( 'HH:MM:SS');''到格式( 'H:I:S');' –
@Vincentģ它不很好地工作。结果:H:我:s – ruzD