Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:检查时间戳是否已经过了一周_Php - Fatal编程技术网

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

PHP:检查时间戳是否已经过了一周,php,Php,让我们假设: $time = '2010-05-17 02:49:30' // (retrieved from MySQL TIMESTAMP field) 如何在PHP中执行以下操作: 1) 检查这段时间过去后是否已超过一周 2) 假设(1)为“假”,找出离一周标记还有多少时间,四舍五入到剩余的天数和小时 我知道这很简单,但它使用了一种非常特殊的语法。由于以前从未玩过时间计算,我希望得到一些指导 谢谢 您可以使用strtime/strftime(或mysql TIMESTAMP)解析您的时间

让我们假设:

$time = '2010-05-17 02:49:30' // (retrieved from MySQL TIMESTAMP field)
如何在PHP中执行以下操作:

1) 检查这段时间过去后是否已超过一周

2) 假设(1)为“假”,找出离一周标记还有多少时间,四舍五入到剩余的天数和小时

我知道这很简单,但它使用了一种非常特殊的语法。由于以前从未玩过时间计算,我希望得到一些指导


谢谢

您可以使用strtime/strftime(或mysql TIMESTAMP)解析您的时间,然后检查是否至少有一周的时间(一周=604800秒)

如果一周还没有过去,你可以计算出还有多少秒可以计算出剩下的天数和小时。

给你:
$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);
$time=strottime('2010-05-902:49:30');
$oneWeekAgo=time()-(7*84600);
$hasOneWeekPassed=$time<$oneWeekAgo;
如果(!$hasOneWeekPassed)
{
$timeLeft=$time-$oneWeekAgo;
}
var_dump($hasOneWeekPassed);
var_dump($timeLeft);
绝对不要照弹片上校说的做(用MySQL计算)。它不仅完全没有必要,而且速度至少比上面的纯PHP慢20倍。

不允许您这样做

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

如果($oneweekago有很多很好的日期操作功能。看看手册中的这个页面,mysql有一个.date\u add和datediff 尽管计算小时数可能很棘手。

无论如何,我不敢相信你会用PHP做比较,为什么不用mysql做这样的计算呢?啊-我不介意。你能给我一个提示吗?@Col.Shrapnel-这只是个糟糕的建议,无论谁投票,你都需要检查他们的脑袋。看我的答案。@Coronatus好的,我同意。告诉我过滤一周前记录的方法就行了使用而不是这种糟糕的方式。很好的方法-没有想到用这种方式来概括。谢谢。哇。有证据吗?如果我要从一个大表中过滤记录呢?我不应该也使用mysql吗?为什么mysql的速度要慢一些?如果他是从数据库中查询,他可以很容易地选择一个额外的布尔字段
DATE\u ADD(我的时间戳,一周)$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.";
}
SELECT * FROM 'contents'
WHERE (WEEK(NOW(), 7) = WEEK('publish_up', 7)) AND YEAR('publish_up') = YEAR(NOW())