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())