如何计算使用字符串减去另一个字符串的时间?

时间:2013-08-13 00:28:48

标签: php time timer

我让我们说一个$value = 5;,而valnue意味着5分钟,我有一个文件保存在服务器上并被修改了很多名为check.txt我想要一个代码来计算if timenow - 文件的时间修改< = 0在H:i:s从5分钟的主$值继续,否则回声请等待从现在开始的时间分钟 - 文件时间修改的主要值为5分钟= $ timeleft in m :s格式。

我正在测试当前代码,但我一直得到-1376352747的值

我知道的代码很糟糕:)是

$filename = 'check.txt';
$time = date("H:i:s");
$time = str_replace("00", "24", $time);
$filemodtime = filemtime($filename);
$timeleft = $time - $filemodtime;
$h = explode(':', $time);
$h = $h[0];
$h = str_replace("00", "24", $h);
$m = explode(':', $time);
$m = $m[1];
$s = explode(':', $time);
$s = $s[2];
$hms = ("$h:$m:$s");

if (count($filemodtime - $time) <= 0) {

echo "you can continue";
}

else {

echo " please wait $timeleft";
}

提前致谢

2 个答案:

答案 0 :(得分:2)

filemtime()函数以秒为单位返回UNIX时间戳,time()函数将当前时间作为UNIX时间戳返回。因此,通过使用该差异,您可以在几秒钟内获得文件的年龄。

$age = time() - filemtime($filename);

// if older then 5 minutes (5 * 60 secounds)
if($age > $value*60)
{
    // good
}
else
{
   $time_left = $value * 60 - $age;
   $time_left_secounds = $time_left % 60;
   $time_left_minutes = ($time_left - $time_left_secounds) / 60;
   $formated_time_left = sprintf("%02d:%02d", $time_left_minutes, $time_left_secounds);

   echo "Please wait {$formated_time_left}";
}

答案 1 :(得分:1)

我建议使用time()而不是date()。 这样,您可以从当前时间()函数中减去文件时间,并查看它是否大于5分钟* 60秒。

祝你好运!