如何在PHP中使用timespan?

时间:2012-06-15 19:50:34

标签: php mysql datetime time timespan

我有两个字段要填充:每15分钟和每小时调用一次页面。

以下字段是MySql中的DateTime:

$lastAccess15m=$row['lastAccess15m'];
$lastAccessHour=$row['lastAccessHour'];

这些字段是整齐的:

$accessPer15m=$row['accessPer15m'];
$accessPerHour=$row['accessPerHour'];

我想将当前时间与$lastAccess15进行比较,如果时间距离大于15分钟,请将$lastAccess15的值设置为当前时间,然后重置$accessPer15m,否则,增量$accessPer15m$lastAccessHour$accessPerHour也是如此,之后必须将这些值保存到mysql数据库。

如何以分钟/小时为单位获取当前时间与$ accessPer15m之间的时间跨度?

2 个答案:

答案 0 :(得分:2)

在SQL中也选择SELECT NOW() as current_timestamp(以及其他选择)。

在PHP中:

if ((strtotime($row['current_timestamp']) - strtotime($row['lastAccess15m'])) > 900) {

 // your code 
}

strtotime将TimeStamp转换为秒,然后您可以将时差与900秒进行比较。 (15分钟)。

答案 1 :(得分:2)

PHP time()

  

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

MySQL datetime

  

DATETIME类型用于包含日期和时间部分的值。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

要比较它们,您需要转换一个并执行比较:

$phpDateFromMysql = strtotime( $mysqldate );

$mySqlDateFromPHP = date('Y-m-d H:i:s', $phpdate);

最简单的方法是将Mysql值转换为time()并执行比较:

请参阅此working Example

<?php

// compare if the value from $lastAccess15 is +15min in relation to the current time
$lastAccess15 = '2012-06-01 00:00:00';

$phpDateFromMysql = strtotime( $lastAccess15 );

if ($phpDateFromMysql - $lastAccess15 > 900) {
    $lastAccess15 = date('Y-m-d H:i:s', time());
}

echo $lastAccess15;
?>

注意:if语句中,您可以执行剩余的操作,如果时间不是&gt,还可以添加else子句来执行某些操作; 15分钟(就像你提到的增量)。


相关阅读材料:

PHP strtotime函数

PHP date函数

PHP elseif/else if控制结构