在PHP中查找datetime对象和当前时间(以秒为单位)之间的差异


Finding the difference between a datetime object and current time (in seconds) in PHP

假设我有一个日期时间对象2015-12-31T12:59。PHP中是否有一种方法可以以秒为单位查找当前日期时间和上述日期时间对象之间的差异?基本上,是否有一种方法可以找出从这一刻到未来日期时间对象指定的日期时间的秒数?

我做了一些挖掘,发现在PHP中有一个DateTime类,但我不确定它是否需要像2015-12-31T12:59这样的格式作为输入

您可以使用date()函数将您的日期转换为自Unix Epoch以来的秒数,然后您可以减去自Unix Epoch以来的实际秒数

$myDate = date('2015-12-31T12:59'); //convert your date in seconds
$now = time(); //convert now in seconds
$numberOfSeconds = $myDate - $now; //make the difference

注意:Unix Epoch = January 1 1970 00:00:00 GMT

Unix系统上的日期可以以Epoch格式存储(例如从1970-01-01 00:00:00开始的秒数)。

time()函数很自然地做到了这一点,其他日期可以用类似strtotime()的方式进行转换。你所要做的就是用一个减去另一个,得到以秒为单位的时间差

您可以尝试使用这种方式,这个结果将给出秒,分钟,小时,天的差异…

//use this way-----------------------
        $c_time=//your current time
        $date_current_time = date('Y-m-d H:i:s');
        $datetime1 = new DateTime($c_time);
        $datetime2 = new DateTime($date_current_time);
        $difference = $datetime1->diff($datetime2);
        $f6=$difference->y.' Y '; 
        $f5=$difference->m.' M'; 
        $f4=$difference->d.' D';
        $f3=$difference->h.' hr';
        $f2=$difference->i.' min';
        $f1=$difference->s.' sec';
if($f2==0 && $f3==0 && $f4==0 && $f5==0 && $f6==0)
     {
         if($f1<=20)
           {
           $time=" few sec ago";
           }
         else if($f1>20)
           {
          $time=$f1." ago";
           }
     }
     else if($f3==0 && $f4==0 && $f5==0 && $f6==0)
     {
          if($f2<=2)
          {
          $time=" few min ago";
          }
         else if($f2>2)
          {
          $time=$f2." ago";
          }
     }
    else if($f4==0 && $f5==0 && $f6==0)
      {
         $time=$f3." ago";
      }
        else if($f5==0 && $f6==0)
      {
          $time=$f4." ago";
      }
        else if($f6==0)
      {
         $time=$f5." ago";
      }
    else
    {
    $time=$f6." ago";
    }

可能这将有助于…获取时间差