Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
时差php/mysql需要有条件地格式化输出(需要4个小亮点)_Php_Mysql - Fatal编程技术网

时差php/mysql需要有条件地格式化输出(需要4个小亮点)

时差php/mysql需要有条件地格式化输出(需要4个小亮点),php,mysql,Php,Mysql,我正在尝试使用php和mysql作为数据库,从字段类型datetime到“立即”的日期/时间差异 此代码工作正常,根据需要返回输出 $datetime1 = new DateTime('mydate1'); $datetime2 = new DateTime(); $interval = $datetime1->diff($datetime2); $elapsed = $interval->format('%d days %h hours %i minutes'); 到目前为止还可

我正在尝试使用php和mysql作为数据库,从字段类型datetime到“立即”的日期/时间差异

此代码工作正常,根据需要返回输出

$datetime1 = new DateTime('mydate1');
$datetime2 = new DateTime();
$interval = $datetime1->diff($datetime2);
$elapsed = $interval->format('%d days %h hours %i minutes');
到目前为止还可以,并没有问题,因为这个函数是针对PHP5.3的,我在服务器上有它

我需要的其实是4件小事

1) 如何消除几天的需要? 我想要(25小时10分钟)而不是(1天1小时10分钟)

2) 例如,如果值超过5小时,我如何将
$appeased
设置为粗体或彩色!?简单如果逻辑不起作用,因为输出实际上不是预定义值

3) 如果天数或小时数为0,则要删除它们! -例如,如果显示(0天10小时40分钟),则无需显示(0天),应显示(10小时40分钟)即可 -另一个例子:0天0小时45分钟,然后只显示“45分钟”,不需要天和小时

4) 如果输出总时间少于5分钟(0天0小时1-5分钟),那么想让它像“一段时间前”那样显示,而不需要任何天、小时或分钟。。。然后6分钟后。。像“6分钟”一样

很快就有了facebook

好的,我搜索的是不同的解决方法组合,但从未奏效,因为您知道这个时间间隔适用于PHP5.3,而且似乎还没有被广泛使用

对于这个长问题的一个或多个部分的任何提示,我们将不胜感激


M、 德里克试图回答你所有的问题。所以请阅读评论,因为我没有为问题写数字。对不起

$datetime1 = new DateTime('mydate1');
$datetime2 = new DateTime();
$minutes = round(abs($datetime1 - $datetime2) / 60,2); //to calculate total time in MINUTES

if($minutes < 5) // for awhile ago problem.
    {
      return "awhile ago"; 
    }

elseif($minutes > 6 && < 60)
    {
       return $minutes." minutes ago"; //for 6 minutes and after.
    }

elseif($minutes>60) // for the hours..
{
    $hours = floor($final_time_saving / 60);
    $minutes = $final_time_saving % 60;
    $string = $hours. " hours and" . $minutes . " minutes ago.";

    if($hours>5) //for bolding characters after 
    { 
     return "<b>".$hours." hours and".$minutes." minutes ago.</b>"; //for bolding character
    }
    else
      return $hours." hours and".$minutes." minutes ago.";
}
$datetime1=newdatetime('mydate1');
$datetime2=新的DateTime();
$minutes=round(绝对值($datetime1-$datetime2)/60,2)//以分钟为单位计算总时间的步骤
if($minutes<5)//刚才的问题。
{
返回“一段时间以前”;
}
其他($minutes>6&&<60)
{
return$minutes.“分钟前”;//持续6分钟及之后。
}
elseif($minutes>60)//用于小时。。
{
$hours=地板($final\u time\u saving/60);
$minutes=$final\u time\u节省%60;
$string=$hours.“$hours.”和“$minutes.“$minutes..”分钟前;
if($hours>5)//用于在
{ 
返回“$hours.”小时和“$minutes.”分钟前。“;//用于加粗字符
}
其他的
返回$hours.“小时和”$minutes.“分钟前”;
}

希望这有帮助。

1)和3)相互矛盾。没问题,想知道如何做到这一点,它将在两个不同的地方使用!只是想看看哪一个更好!?你到底需要什么?如果你写下你的目标,可能会有一种不同的更好的方法。itachi,见下面Gokigoooks先生的答案,它有必要,他几乎涵盖了所有内容,将调整代码以获得我的脚本所需的确切内容完美,显然回答了我的大部分担忧,谢谢你能给我解释一下吗?我无法通过这种方式获得最终结果变量:(抱歉,请看一看并再次建议您好,我的datetime字段是这样的“2012-11-16 09:08:45”,但我一直收到这样的错误:“类datetime的对象无法转换为int”在何处转换?具体转换方式如何?我读了很多书,读了很多树,但还没有任何结果:(嘿,朋友,尝试在日期中添加GMT。尝试一种
datetime1=strottime(“mydate1”);
方法。使用第二种方法,然后它以秒为单位返回整数。因此
$minutes=round(abs($datetime1-$datetime2)/60,2);
请尝试