【问题标题】:display message if time difference is greater than 50 minutes - php如果时差大于 50 分钟,则显示消息 - php
【发布时间】:2015-06-16 07:09:46
【问题描述】:

基本上我得到了当前时间和数据库时间之间的时差。

  $cur_time = time();
  $db_time = $rs[$k]['update_time'];
  $diff = abs($cur_time - $db_time);

  $months  = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); 
  $days    = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
  $hours   = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); 
  $minutes  = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); 
  $seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60));

然后以分钟、小时、天等显示时间差异

if($hours!= 0)
  {
        if($hours== 1)
        {
            $time2 = $hours.' hour, ';
        }
        else
        {
            $time2 = $hours.' hours, ';
        }

  }
  else
  {
        $time2 = '';
  }
  if($minutes!= 0)
  {
        if($minutes== 1)
        {
            $time3 = $minuts.' minute, ';
        }
        else
        {
            $time3 = $minuts.' minutes, ';
        }

  }
  else
  {
        $time3 = '';
  }

秒、天和月都一样.. 然后显示总时差,

$timediff = $time1.$time2.$time3.$time4.' ago';

如果我的分钟数大于 50 ,我需要显示消息否则另一条消息。

if($time3 > 50 || $time4 > 1 || $time3 > 1 || $time2 > 1 || $time1 > 1)
{
    $msg = 'greater';
}
else
{
    $msg = 'lesser';
}

问题是 - 分钟、小时、天存储在单独的变量中。假设,如果我的时差是 55 分钟,则显示

55 minutes ago

我的条件将变为 如果条件,这是正确的。如果我的时差是 1 小时 2 分钟

 1 hour 2 minutes ago

我的条件再次进入 if 条件,仅考虑不到 50 分钟的 2 分钟,而不是应该进入 else 循环。如何为这些时差设置条件

【问题讨论】:

  • 不存在 if 循环
  • 为什么不使用时间戳?
  • 我会说 if 语句 检查 if 条件 是否成立并执行 if 分支 或(如果存在)else 分支.

标签: php datetime time


【解决方案1】:

您可以使用 PHP 中的 DateTime 类:

$dt = new \DateTime('@1434438947'); //unix timestamp
$diff = $dt->diff(new \DateTime(), true);

echo $diff->days * 1440 + $diff->h * 60 + $diff->i; //minutes difference absolute

【讨论】:

    【解决方案2】:

    你为什么不把你的条件放在转换之前?

    $cur_time = time();
    $db_time = $rs[$k]['update_time'];
    $diff = abs($cur_time - $db_time);
    
    if($diff > 3000) // 3600 is 1 hour and 3000 is 50 minutes
    {
         $msg = 'greater';
    }
    else
    {
         $msg = 'lesser';
    }
    

    即使时差是 1 hour 2 minutes ,也可以正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-22
      • 1970-01-01
      • 2017-09-28
      • 2016-12-19
      • 2016-07-08
      • 1970-01-01
      • 2012-05-31
      • 2021-11-13
      相关资源
      最近更新 更多