我有两个时间-例如-当前时间- 08:24和日期是02/01/2013在dd/mm/yyyy格式,我有另一个时间在13:46和日期是31/12/2012 .那么,我怎么才能计算两个时间之间的差异,在小时使用PHP.(即42.63小时)提前感谢.
uqjltbpv1#
将它们都转换为时间戳值,然后相减以获得以秒为单位的差值。
$ts1 = strtotime(str_replace('/', '-', '02/01/2013 08:24')); $ts2 = strtotime(str_replace('/', '-', '31/12/2012 13:46')); $diff = abs($ts1 - $ts2) / 3600;
vptzau2j2#
另一种方法是使用PHP的日期相关类。下面的示例使用DateTime::diff()来获取DateInterval对象($interval)。然后使用interval的属性来获得该间隔的总小时数。
DateTime::diff()
DateInterval
$interval
$a = DateTime::createFromFormat('H:i d/m/Y', '08:24 02/01/2013'); $b = DateTime::createFromFormat('H:i d/m/Y', '13:46 31/12/2012'); $interval = $a->diff($b); $hours = ($interval->days * 24) + $interval->h + ($interval->i / 60) + ($interval->s / 3600); var_dump($hours); // float(42.633333333333)
gj3fmq9x3#
我有个简单的办法,试试这个-
echo getTimeDiff("10:30","11:10"); function getTimeDiff($dtime,$atime) { $nextDay = $dtime>$atime?1:0; $dep = explode(':',$dtime); $arr = explode(':',$atime); $diff = abs(mktime($dep[0],$dep[1],0,date('n'),date('j'),date('y'))-mktime($arr[0],$arr[1],0,date('n'),date('j')+$nextDay,date('y'))); $hours = floor($diff/(60*60)); $mins = floor(($diff-($hours*60*60))/(60)); $secs = floor(($diff-(($hours*60*60)+($mins*60)))); if(strlen($hours)<2){$hours="0".$hours;} if(strlen($mins)<2){$mins="0".$mins;} if(strlen($secs)<2){$secs="0".$secs;} return $hours.':'.$mins.':'.$secs; }
kgsdhlau4#
如果你有日期作为时间戳(如果需要,使用strtotime),然后减去它们,也可以取绝对值,然后除以3600(一小时的秒数)。
strtotime
sgtfey8w5#
我认为下面的代码对于了解如何使用PHP计算时差非常有用
function date_diff($date_1 , $date_2 , $format) { $datetime1 = date_create($date_1); $datetime2 = date_create($date_2); $diff = date_diff($datetime1, $datetime2); return $diff->format($format); }
上面的函数对于计算两个时间和日期之间的差值非常有用。日期以输出格式作为参数给出。输出格式如下所示:// '%y年%m月%d日%h小时%i分钟%s秒' =〉1年3月14日11小时49分钟36秒// '%y年%m月%d日' =〉1年3月14日// '%m月%d日' =〉3月14日// '%d日%h小时' =〉14日11小时// '%d天' =〉14天// '%h小时%i分钟%s秒' =〉11小时49分钟36秒// '%i分钟%s秒' =〉49分钟36秒// '%h小时=〉11小时// '%a天
wfsdck306#
只是把这个放在这里,对于任何人谁需要找到两个日期/时间戳之间的差异在Hours,Minutes '和' Seconds!!
Hours
Minutes
Seconds
$futureDate_raw = '12/13/2018'; // This is your finish date. $fdate = strtotime($futureDate_raw); $hours = (($fdate - time()) / 3600; $mins = (($fdate - time()) % 3600) / 60; $seconds = ((($fdate- time()) % 3600) % 60);
2ekbmq327#
我发现这是找到时差的最简单的方法,它总是对我有效
$timestamp1 = strtotime(date('Y-m-d H:i')); $timestamp2 = strtotime("2020-04-05 18:00"); $diff = abs($timestamp2 - $timestamp1)/(60*60); echo $diff;
gcxthw6b8#
以下代码可用于获取格式为H:I:S的时差:
function time_diff($startDateTime, $endDateTime) { $startDateTime = strtotime(str_replace('/', '-', $startDateTime)); $endDateTime = strtotime(str_replace('/', '-', $endDateTime)); $difference = abs($startDateTime - $endDateTime); $hours = floor($difference / 3600); $minutes = floor(($difference % 3600) / 60); $seconds = $difference % 60; return str_pad($hours, 2, '0', STR_PAD_LEFT). ":" . str_pad($minutes, 2, '0', STR_PAD_LEFT). ":" . str_pad($seconds, 2, '0', STR_PAD_LEFT); }
function time_diff($startDateTime, $endDateTime) { $datetime1 = new DateTime($startDateTime); $datetime2 = new DateTime($endDateTime); $interval = $datetime1->diff($datetime2); return $interval->format('%H:%I:%S'); }
谢谢你!
8条答案
按热度按时间uqjltbpv1#
将它们都转换为时间戳值,然后相减以获得以秒为单位的差值。
vptzau2j2#
另一种方法是使用PHP的日期相关类。下面的示例使用
DateTime::diff()
来获取DateInterval
对象($interval
)。然后使用interval的属性来获得该间隔的总小时数。gj3fmq9x3#
我有个简单的办法,试试这个-
kgsdhlau4#
如果你有日期作为时间戳(如果需要,使用
strtotime
),然后减去它们,也可以取绝对值,然后除以3600(一小时的秒数)。sgtfey8w5#
我认为下面的代码对于了解如何使用PHP计算时差非常有用
上面的函数对于计算两个时间和日期之间的差值非常有用。日期以输出格式作为参数给出。
输出格式如下所示:
// '%y年%m月%d日%h小时%i分钟%s秒' =〉1年3月14日11小时49分钟36秒// '%y年%m月%d日' =〉1年3月14日// '%m月%d日' =〉3月14日// '%d日%h小时' =〉14日11小时// '%d天' =〉14天// '%h小时%i分钟%s秒' =〉11小时49分钟36秒// '%i分钟%s秒' =〉49分钟36秒// '%h小时=〉11小时// '%a天
wfsdck306#
只是把这个放在这里,对于任何人谁需要找到两个日期/时间戳之间的差异在
Hours
,Minutes
'和'Seconds
!!2ekbmq327#
我发现这是找到时差的最简单的方法,它总是对我有效
gcxthw6b8#
以下代码可用于获取格式为H:I:S的时差:
谢谢你!