11

タイムスタンプが 12 時間より古いかどうかを確認するにはどうすればよいですか?

リンクを 12 時間機能させる必要があり、その後はエラー メッセージを表示する必要があります。

4

4 に答える 4

33
$dateFromDatabase = strtotime("2012-12-04 12:05:04");
$dateTwelveHoursAgo = strtotime("-12 hours");

if ($dateFromDatabase >= $dateTwelveHoursAgo) {
    // less than 12 hours ago
}
else {
    // more than 12 hours ago
}
于 2013-01-12T23:19:17.830 に答える
5

#1。データベースで比較します:

TIMESTAMPフィールドがある場合:

timestampField < (CURRENT_TIMESTAMP() - 3600*12)

DATETIMEフィールドがある場合:

datetimeField < DATE_SUB(NOW(), INTERVAL 12 HOUR)

#2。PHPで比較してください:

$c = new DateTime;
$d = new DateTime('you timestamp or datetime');
if ($c < $d->modify('-12 hour')) { ...
于 2013-01-13T00:16:00.507 に答える
1

unix-timestamp のことだと思います。もしそうなら、あなたは簡単な数学を適用することができます:

// a unix-timestamp is the time since 1970 in seconds
// 60 seconds = 1 minute, 60 minutes = 1 hour, 12 hours
// so this calculates the current timestamp - 12 hours and checks
// if 12 hours ago the timestamp from your database lay in the future
if ( $timestamp > (time() - 60*60*12) ) {
    // show your link
} else {
    // 12 hours are up
    // give your error message
}

データベースがフォーマットされた日付を返す場合 (タイムスタンプ/日付フィールド タイプの mysql など) strtotime()、最初に UNIX タイムスタンプを取得するために使用する必要があります。

于 2013-01-12T23:45:18.137 に答える
1

ダウンロードリンクで使用している一意のキーがあると思います。WHEREステートメントにタイムスタンプ句を含めるだけです。

<?php

$timestamp = date('Y-m-d H:i:s', strtotime('-12 hours'));

$sql = "SELECT * FROM `links` WHERE `key` = :key AND `created` > :timestamp";
$stmt = $db->prepare($sql);
$stmt->bindParam(':key', $key, PDO::PARAM_STR);
$stmt->bindParam(':timestamp', $timestamp, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetchObject();
于 2013-01-12T23:49:11.457 に答える