我有两个时间戳,我会根据
来获取差异在我的代码中我有
$diff = ($truckHistory->created_at - $model->created_at);
return $this->convertToSecMinHour($diff)
public function convertToSecMinHour($diff){
switch($diff){
case ($diff <= 60):{
return $diff. "sec"
break;
}
//stuck for minutes and hours cases
}
}
以上以秒为单位返回 所以我试过了
import sys, os, time
答案 0 :(得分:2)
我有这个功能,但它包括其他测量时间的方法。你可以简单地删除那些你不需要的东西。
public function timeAgo($timestamp) {
$estimateTime = time() - $timestamp;
if ($estimateTime < 1) {
return 'less than 1 second ago';
}
$condition = array(
12 * 30 * 24 * 60 * 60 => 'year',
30 * 24 * 60 * 60 => 'month',
24 * 60 * 60 => 'day',
60 * 60 => 'hour',
60 => 'minute',
1 => 'second'
);
foreach ($condition as $secs => $str) {
$d = $estimateTime / $secs;
if($d >= 1) {
$r = round( $d );
return $r . ' ' . $str . ( $r > 1 ? 's' : '' ) . ' ago';
}
}
}
答案 1 :(得分:0)
您可以快速使用此功能,只需将秒数传递给它。 Example here
$time1 = '1504802148'; // Unix timeStamp
$timeDiff = ceil((time() - $time1));
echo secondsToTime($timeDiff);
function secondsToTime($seconds) {
$dtF = new \DateTime('@0');
$dtT = new \DateTime("@$seconds");
$makeTime = $dtF->diff($dtT)->format('%ad,%hh,%im,%ss');
$data = explode(",", $makeTime);
$array = array('0d', '0h', '0m');
$time = array_diff($data, $array);
return implode("", $time);
}
答案 2 :(得分:0)
使用此功能:
<?php
$diff = (time() - time()+60);
$diff2 = (time() - time()+2000);
$diff3 = (time() - time()+5000);
echo convertToSecMinHour($diff)."<br>";
echo convertToSecMinHour($diff2)."<br>";
echo convertToSecMinHour($diff3)."<br>";
function convertToSecMinHour($diff, $decimals = 2) {
switch($diff){
case ($diff <= 60):
$result = $diff;
$unit = "sec";
break;
case ($diff > 60 && $diff < 3600):
$result = ($diff / 60);
$unit = "min";
break;
case ($diff >= 3600):
$result = ($diff / (60 * 60));
$unit = "hrs";
break;
default:
$result = 0;
$unit = "";
}
return round($result, $decimals).$unit;
}
如果差异小于60,则以秒为单位返回差异(即20秒),如果差异在60到3600秒之间,则以分钟(即20分钟)的差异,以及小时差异(即20小时)如果差异大于3600.第二个参数是结果中所需的小数位数(默认为2)。
答案 3 :(得分:0)
我认为您想要$ result,还有其他变量可供使用
$result;
$hour = $diff / 3600;
if ($hour == 0) {
$min = ($diff % 3600) / 60;
if ($min == 0) {
$sec = ($diff % 3600) % 60;
$result = $sec;
}else{
$result = $min;
}
}else{
$result = $hour;
}