将时间戳转换为X秒前的PHP

时间:2015-06-09 10:02:11

标签: php android mysql

我目前正在开发一个使用PHP从SQL数据库中检索数据的Android应用程序。每组数据都有不同的时间戳。我数据库中时间戳的格式是(yyyy-mm-dd h:m:s)。现在我想转换我的时间戳,以便Android用户将看到时间戳(X秒前,X分钟前或X天前)。我试过我的PHP代码,但结果我得到的每个数据集的时间戳是(1天前)。每组数据显示1天前。谁能帮我?感谢

Product.php

$str = 'a:4:{i:0;s:1:"5";i:1;s:1:"6";i:2;s:1:"7";i:3;s:1:"8";}';
preg_match_all(  '/"(\d+)"/', $str, $matches );

print_r($matches[1]);

3 个答案:

答案 0 :(得分:1)

if ($timeType == "x") {
    if ($timeCalc == 60) {
        $timeType = "m";
    }
    if ($timeCalc == (60*60)) {
        $timeType = "h";
    }
    if ($timeCalc == (60*60*24)) {
        $timeType = "d";
    }
}        

你这里有问题, 你在if:

中影响$ timeCalc
{{1}}

例如,我认为你只需要忘记==。

更正后的代码:

{{1}}

答案 1 :(得分:1)

相同的简化脚本将是

function xTimeAgo ($oldTime, $newTime) {
$timeCalc = strtotime($newTime) – strtotime($oldTime);
if ($timeCalc > (60*60*24)) {$timeCalc = round($timeCalc/60/60/24) . ” days ago”;}
else if ($timeCalc > (60*60)) {$timeCalc = round($timeCalc/60/60) . ” hours ago”;}
else if ($timeCalc > 60) {$timeCalc = round($timeCalc/60) . ” minutes ago”;}
else if ($timeCalc > 0) {$timeCalc .= ” seconds ago”;}
return $timeCalc;
}

试试这个。希望这会对你有所帮助。

code

有一个很好的例子

答案 2 :(得分:1)

由于这段代码,代码总是返回一天:

if ($timeType == "x") {
    if ($timeCalc = 60) {
        $timeType = "m";
    }
    if ($timeCalc = (60*60)) {
        $timeType = "h";
    }
    if ($timeCalc = (60*60*24)) {
        $timeType = "d";
    }
}      

($ timeCalc = 60)不检查$ timeCalc是否等于60,这也是错误的,它应该检查它是否大于60,它将$ timecalc设置为60,这也被评估为真。 / p>

作为一个结果,每次运行该函数时,$ timeCalc首先设置为60,然后是60 * 60,最后设置为60 * 60 * 24。与$ timeType类似,它设置为“m”,然后设置为“h”,最后设置为“d”,这样,如果检查代码,就会看到为什么它总是会返回一天。

尝试设置以下if子句:

if ($timeType == "x") {
    if ($timeCalc > 60) {
        $timeType = "m";
    }
    if ($timeCalc > (60*60)) {
        $timeType = "h";
    }
    if ($timeCalc > (60*60*24)) {
        $timeType = "d";
    }
}