使用php time()计算剩余时间

时间:2015-07-09 03:25:11

标签: php time

我有一个PHP脚本,我需要确保预先设置" future"时间还没有过去。

当最初记录(或传递并需要重新登录)时间时,我正在服用:

$newTime = time() + 15000; // 2.5 minutes from "now"

系统在DB中没有问题,数字似乎是正确的。

现在,当页面加载时,它会从数据库中提取数字并将其加载到.php文件中:

error_reporting(E_ALL);
ini_set('display_errors',1);
$tname = $_SESSION['username']."Data";
$results = $conn->query("SELECT val FROM $tname where pri='pettyTimer'") or die(mysqli_error($conn)); 
  //$conn declared elsewhere for connection and does work properly
$row = $results->fetch_assoc();
$timer = $row['val'];

然后我比较时间:

$now = time();
if ($timer > time()) { //script below
} else {
//more script that seems to be working fine
}

当原始条件$timer > time()为真时,我试图分解剩余时间的分钟和秒数,并以用户可读的基本格式回显它们:

$raw = ($timer - $now);
$minutesLeft = floor($raw / 60000);
$totalMinutes2Mils = $minutesLeft * 60000;
$totalRemainingSecs = round(($raw - $totalMinutes2Mils) / (1000));

echo "You are still laying low from the last job you ran. You still have ".$minutesLeft." Minutes and ".$totalRemainingSecs." Seconds left.";

我的问题是,当我刷新/重新加载页面时,时间似乎没有移动。

我回复了time()$timer,当我第一次加载时它们相距15000毫秒,所以这应该只存在(有条件的是真实的)大约2.5分钟,但是我已经自从我上一次开始以来至少工作了5分钟,它仍然是14秒。

有人可以仔细检查我的数学,以确保我正确计算这个吗?谢谢!

2 个答案:

答案 0 :(得分:1)

time()函数返回自Unix Epoch(1970年1月1日00:00:00 GMT)以来的秒数当前时间。

http://www.w3schools.com/php/func_date_time.asp

您将其视为毫秒,但应将​​其视为直接秒。大概/ 1000,你应该没事。

$minutesLeft = floor($raw / 60);
$totalMinutes2Mils = $minutesLeft * 60;

$newTime = time() + (60*2.5); // 2.5 minutes from "now"

答案 1 :(得分:1)

time()返回秒,而不是毫秒,所以你应该添加150而不是15000来获得2:30分钟。