PHP: Проверьте, прошла ли неделя с момента отметки времени



Предположим:



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


Как сделать следующее в PHP:



1) Проверьте, прошло ли больше недели с тех пор, как это время прошло?

2) предположив "false" на (1), выясните, сколько еще времени до отметки в одну неделю, округленной до оставшихся дней и часов.

Я знаю, что это довольно просто, но он использует очень специфический синтаксис. Я никогда раньше не играл с вычислениями времени, поэтому был бы признателен за некоторые указания.

Спасибо!

526   7  
PHP

7 ответов:

$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.";
}

Не strtotime позволяет вам делать такие вещи...

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

Вы можете использовать strptime/strftime (или метку времени mysql) для анализа вашего времени, а затем проверить, является ли оно по крайней мере одной неделей в настоящем (одна неделя = 604800 секунд).

Если одна неделя не прошла, то вы можете вычислить, сколько секунд еще осталось, из которых вы можете вычислить оставшиеся дни и часы.

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

Существует множество замечательных функций для манипулирования датой. Взгляните на эту страницу руководства http://php.net/manual/en/ref.datetime.php

Mysql имеет кучу функций datetime . среди них date_add и datediff.
хотя считать часы было довольно сложно.
В любом случае, я не могу поверить, что вы собираетесь сделать это сравнение с помощью PHP

Вот ты где.:

$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);

Абсолютно не делайте того, что сказал полковник шрапнель (вычислите это в MySQL). Мало того, что это совершенно не нужно, но это будет по крайней мере в 20 раз медленнее, чем чистый PHP выше.

Comments

    Ничего не найдено.