我需要比较两个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应该是真的。我认为这个问题是我的数学问题。有人可以帮忙吗?感谢。
答案 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
}
只需比较两个整数时间戳值...