我将FB API中的值插入到我的数据库中。对于每个事件创建时间,其中一个值是timestamp
。
现在它的设置方式是抓住所有用户tagged_places
。我正在尝试将tagged_place
创建的时间与当前时间进行比较,如果不是在过去的24小时内,我希望忽略它。
我知道我需要转换数据库中的时间戳,以便让php读取它。我找到了这个
但我不了解如何实施它。
这是我对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小时内创建的数据中插入值?
答案 0 :(得分:2)
假设$data->created_time
是datetime
或类似格式:
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秒),请继续进行插入。