PHP:检查自时间戳以来是否已经过了一周

时间:2010-05-16 19:14:05

标签: php

我们假设:

$time = '2010-05-17 02:49:30' // (retrieved from MySQL TIMESTAMP field)

如何在PHP中执行以下操作:

1)检查自此时间过后是否超过一周?

2)假设(1)上的“假”,找出在一周标记之前还有多少时间,四舍五入到剩余的日期和小时。

我知道这非常简单,但它使用了非常具体的语法。从来没有玩过时间计算,我很感激一些指导。

谢谢!

7 个答案:

答案 0 :(得分:10)

$time = strtotime('2010-05-10 02:49:30');
$one_week_ago = strtotime('-1 week');

if( $time > $one_week_ago ) { 
    // it's sooner than one week ago
    $time_left = $time - $one_week_ago;
    $days_left = floor($time_left / 86400); // 86400 = seconds per day
    $hours_left = floor(($time_left - $days_left * 86400) / 3600); // 3600 = seconds per hour
    echo "Still $days_left day(s), $hours_left hour(s) to go.";
}

答案 1 :(得分:6)

strtotime不允许你做这样的事情......

$timestamp = strtotime($time);
$oneweekago = strtotime("-1 week");
if($oneweekago<=$timestamp) {
    // it's been less than one week
    $secondsleft = $oneweekago - $timestamp;
    // ...
}

答案 2 :(得分:1)

您可以使用strptime / strftime(或mysql TIMESTAMP)来解析您的时间,然后检查它是否至少是现在的一周(一周= 604800秒)。

如果一周没有通过,那么您可以计算出剩余的秒数,您可以从中计算剩余的天数和小时数。

答案 3 :(得分:1)

SELECT * FROM 'contents'
WHERE (WEEK(NOW(), 7) = WEEK('publish_up', 7)) AND YEAR('publish_up') = YEAR(NOW())

答案 4 :(得分:0)

日期操作有很多很棒的功能。请查看手册http://php.net/manual/en/ref.datetime.php

中的此页面

答案 5 :(得分:0)

mysql有一个bunch of datetime functions。其中包括date_add和datediff 虽然数小时可能会很棘手。
无论如何,我不相信你会用PHP进行比较

答案 6 :(得分:-3)

你在这里:     

$time = strtotime('2010-05-9 02:49:30');
$oneWeekAgo = time() - (7 * 84600);

$hasOneWeekPassed = $time < $oneWeekAgo;
if (!$hasOneWeekPassed)
{
    $timeLeft = $time - $oneWeekAgo;
}

var_dump($hasOneWeekPassed);
var_dump($timeLeft);

绝对不要做Col. Shrapnel所说的(在MySQL中计算)。它不仅完全没有必要,而且比上面的纯PHP慢至少20倍。