0

2つの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
}

ただし、ifが真である必要がある場合でも、ifではなくelse節が満たされ続けます。問題は私の数学だと思います。誰かが助けることができますか?ありがとう。

4

3 に答える 3

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

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

ここで行っているのは、time()がファイル変更のUNIXタイムスタンプに加えて、今から3分間のUNIXタイムスタンプよりも大きいかどうかを確認することです。それが真実である可能性は非常に低いです-$filemodtimeに180を追加するだけの方がはるかに良いです:

if (time() >= $filemodtime + (60 * 3)) {
于 2012-06-22T20:30:19.630 に答える
3

私の提案は、次のようなifステートメントをやり直すことです。

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

「今から3分後」が発生したときに明示的に計算する必要がなくなります

于 2012-06-22T20:27:39.813 に答える
1
if (file_exists($filename)) {
    $filemodtime = filemtime($filename);
}

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

2つの整数のタイムスタンプ値を比較するだけです。

于 2012-06-22T20:27:22.873 に答える