2015-08-24 44 views
0

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

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

+0

我不完全相信你如何建立一个像'2015-12-31T12一个DateTime对象:59',但你可以简单地在T字符上“爆炸”它,并重建一个正常的DateTime字符串作为DateTime类的输入。 – icecub

+0

@icecub我从HTML中的输入类型'datetime-local'中获得了上述格式的日期时间对象。 –

+1

我明白了。你知道'datetime-local'在IE或Firefox中不起作用吗?它在Chrome中运行正常。尽管如此,除非你100%确定所有的用户都会使用Chrome浏览器(而且你几乎从未使用过Chrome浏览器!),但我不会依赖于此来获取日期时间对象。 – icecub

回答

2

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

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

注: Unix纪元= 1970年1月1日00:00:00 GMT

1

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

时间()功能做到这一点自然和其他日期可以像的strtotime()转换。所有你需要做的就是减去一个从对方获得秒的时间差

0

,你可以尝试使用这种方式这一结果会给以秒为单位的不同,分,小时,天...

//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"; 
    } 

可能这将有助于...获得时间差异

相关问题