我们假设:
$time = '2010-05-17 02:49:30' // (retrieved from MySQL TIMESTAMP field)
如何在PHP中执行以下操作:
1)检查自此时间过后是否超过一周?
2)假设(1)上的“假”,找出在一周标记之前还有多少时间,四舍五入到剩余的日期和小时。
我知道这非常简单,但它使用了非常具体的语法。从来没有玩过时间计算,我很感激一些指导。
谢谢!
答案 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倍。