Unix时间戳为秒,分钟,小时

时间:2010-07-16 18:42:08

标签: php mysql

我需要以某种方式获取unix时间戳并将其输出如下

可以用MySQL完成吗?或者php

Mike                             7s ago
Jim                              44s ago
John                             59s ago
Amanda                           1m ago
Ryan                             1m ago
Sarah                            1m ago
Tom                              2m ago
Pamela                           2m ago
Ruben                            3m ago
Pamela                           5h ago

你可以猜到我只想打印分钟,而不是分钟和秒(1分3秒前)

我应该研究什么?

6 个答案:

答案 0 :(得分:7)

是的,可以做到。 See related post

$before // this is a UNIX timestamp from some time in the past, maybe loaded from mysql
$now = time()

$diff = $now - $before;
if( 1 > $diff ){
   exit('Target Event Already Passed (or is passing this very instant)');
} else {
   $w = $diff / 86400 / 7;
   $d = $diff / 86400 % 7;
   $h = $diff / 3600 % 24;
   $m = $diff / 60 % 60; 
   $s = $diff % 60;

   return "{$w} weeks, {$d} days, {$h} hours, {$m} minutes and {$s} secs away!"
}

答案 1 :(得分:6)

PHP 5.3及更新版本具有DateTime个对象,您可以使用从数据库返回的数据构建这些对象。这些DateTime个对象使用diff方法将两个日期之间的差异作为DateInterval对象,然后您可以format

修改:将sub更正为diff

编辑2: 通过这种方式实现两次捕获:

  1. DateTime的构造函数似乎不带UNIX时间戳...除非以@为前缀,如下所示:$startDate = new DateTime('@' . $timestamp);
  2. 如果不手动检查它们,您将不知道最大的单位是什么。要获得单个字段,您仍然需要使用格式,但只需使用一个代码......类似于$years = $dateDiff->format('y');

答案 2 :(得分:1)

function sECONDS_TO_DHMS($seconds)
{

    $days = floor($seconds/86400);
    $hrs = floor($seconds / 3600);
    $mins = intval(($seconds / 60) % 60); 
    $sec = intval($seconds % 60);

    if($days>0){
        //echo $days;exit;
        $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT);
        $hours = $hrs-($days*24);
        $return_days = $days." Days ";
        $hrs = str_pad($hours,2,'0',STR_PAD_LEFT);
    }else{
        $return_days="";
        $hrs = str_pad($hrs,2,'0',STR_PAD_LEFT);
    }

    $mins = str_pad($mins,2,'0',STR_PAD_LEFT);
    $sec = str_pad($sec,2,'0',STR_PAD_LEFT);

    return $return_days.$hrs.":".$mins.":".$sec;
}

echo sECONDS_TO_DHMS(2); // Output 00:00:02
echo sECONDS_TO_DHMS(96000); // Output 1 Days 02:40:00

答案 3 :(得分:0)

PHP的date()函数

以及time()以及其他一些在这些文档中链接的内容

这也可以在带有date and time函数

的Mysql中完成

答案 4 :(得分:0)

您可以尝试我的Timeago建议here

它可以提供这样的输出:

  

您打开此页小于a   分钟前。 (这会更新每一个   分钟。等等。)

     

此页面最后修改 11天   前

     

Ryan出生 31年前

答案 5 :(得分:0)

我手边没有mysql服务器,但是以下命令的组合可以让你得到你想要的东西。

DATEDIFF

DATEFORMAT