使用PHP将当前时间与Mysql DB中的时间戳进行比较

时间:2014-06-16 20:26:55

标签: php mysql

我将FB API中的值插入到我的数据库中。对于每个事件创建时间,其中一个值是timestamp

现在它的设置方式是抓住所有用户tagged_places。我正在尝试将tagged_place创建的时间与当前时间进行比较,如果不是在过去的24小时内,我希望忽略它。

我知道我需要转换数据库中的时间戳,以便让php读取它。我找到了这个

Click Here

但我不了解如何实施它。

这是我对DB的插入查询,

$stmt = $con->prepare('
    INSERT INTO taggedPlaces
    (id, created_time, place_id, latitude, longitude, name)
    VALUES
    (?, ?, ?, ?, ?, ?)
');

foreach($graphObject['tagged_places']->data as $data) {
   $stmt->execute(array(
       $data->id,
       $data->created_time,
       $data->place->id,
       $data->place->location->latitude,
       $data->place->location->longitude,
       $data->place->name
   ));
}

如何将此更改为仅在过去24小时内创建的数据中插入值?

1 个答案:

答案 0 :(得分:2)

假设$data->created_timedatetime或类似格式:

foreach($graphObject['tagged_places']->data as $data) {

   if (time() - strtotime($data->create_time) < 86400) { ...

       $stmt->execute(array(
           $data->id,
           $data->created_time,
           $data->place->id,
           $data->place->location->latitude,
           $data->place->location->longitude,
           $data->place->name
       ));
   }
}

如果$data->created_time已经是时间戳,则无需strtotime()

if (time() - $data->created_time < 86400) { ...

一些解释:

  • A Unix Timestamp是自1970年1月1日以来的秒数。

  • time()返回当前的unix时间戳。

  • strtotime()将字符串转换为unix时间戳。

  • time() - strtotime($data->created_time)是秒之间的差异 当前时间和存储的时间。

  • 86400是24小时内的秒数。

所以声明

if (time() - strtotime($data->created_time) < 86400) { ...

说:

如果当前日期/时间与标记地点的日期/时间之间的差异(以秒为单位)小于24小时(86400秒),请继续进行插入。