比较Unix时间戳

时间:2012-06-22 20:19:33

标签: php

我需要比较两个Unix时间戳,我在数学上遇到了麻烦。我知道Unix时间戳是自1970年1月1日以来的秒数。但是我的数学运算出错了。我正在尝试检测文件上次修改时间是否为3分钟。这是我的代码:

if (file_exists($filename)) {
    $filemodtime = filemtime($filename);
}

$three_min_from_now = mktime(0, 3, 0, 0, 0, 0);

if (time() >= $filemodtime + $three_min_from_now) {
     // do stuff
} else {
     // do other stuff
}

但是else子句仍然令人满意,而不是if,即使if应该是真的。我认为这个问题是我的数学问题。有人可以帮忙吗?感谢。

3 个答案:

答案 0 :(得分:5)

$three_min_from_now = mktime(0, 3, 0, 0, 0, 0);

if (time() >= $filemodtime + $three_min_from_now) {

你在这里做的是检查time()是否大于文件修改的unix时间戳,加上从现在起三分钟的unix时间戳。这是非常非常不可能的 - 你只需要在$ filemodtime中添加180就好了:

if (time() >= $filemodtime + (60 * 3)) {

答案 1 :(得分:3)

我的建议是重做你的if语句:

if((time() - $filemodtime) >= 180)

当“从现在起3分钟”发生时,它无需明确计算

答案 2 :(得分:1)

if (file_exists($filename)) {
    $filemodtime = filemtime($filename);
}

if (time() - $filemodtime > (3*60)) {
     // it been more than 3 minutes
} else {
     // do other stuff
}

只需比较两个整数时间戳值...