PHP: условно по дате - PullRequest
       4

PHP: условно по дате

0 голосов
/ 17 февраля 2011

У меня есть такая дата: 16.02.2011

Я хочу создать простое условное выражение PHP, которое проверяет, является ли сегодняшняя дата тем или ДНЕМ или ПОСЛЕ, например:

<?php

    $mydate = '26/01/2010';

    if($mydate == date('dd/mm/yyyy')
    {
        echo 'last day to reply';
    }
    elseif($mydate == 'date after todays date')
    {
        echo 'post has expired and you cannot reply';

    }
    else
    {
        echo 'post has NOT expired and you can reply';
    }

?>

Так, если сегодняшняя дата - 01.01.2011, то будет сказано, что сообщение не истекло, если дата - 17.02.2011, тогда будет последний день для ответа, и если дата наступит после 25/02 /.2011 год, то он сказал бы, что он истек.

Кто-нибудь может помочь?Спасибо:)

Ответы [ 7 ]

1 голос
/ 17 февраля 2011

Проще говоря, вы хотели бы сделать что-то вроде:

if (strtotime ($ date)> date ()) {echo "Срок действия вашего сообщения истек";}

очень трудно сравнивать строки date-are-string, особенно если учесть, что "2/3/4" может быть любой из 8 разных дат (3 февраля '04; 4 марта ')02; и т.д ..).Сохранение даты / времени в качестве фактических значений меток времени в PHP значительно упрощает сравнение.

1 голос
/ 17 февраля 2011

Вместо сравнения визуальных дат, вероятно, лучше сравнить временные метки:

$deadline = strtotime('2010-01-26');
$today = mktime(0, 0, 0);
if ($today == $deadline) {
   echo 'last day';
}
else if ($today > $deadline) {
   echo 'past day';
}
else {
   echo 'a-okay';
}
1 голос
/ 17 февраля 2011

самый простой способ - это иметь дату уже в правильном формате.Особенно если это исходит из базы данных.

<?php

    $mydate = '2010-01-26';
    $curdate = date('Y-m-d');

    if($curdate == $mydate)
    {
        echo 'last day to reply';
    }
    elseif($curdate > $mydate)
    {
        echo 'post has expired and you cannot reply';
    }
    else
    {
        echo 'post has NOT expired and you can reply';
    }

?>

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

1 голос
/ 17 февраля 2011

Вы можете использовать mktime (или strotime, если вы можете получить дату окончания в правильном формате, 17-02-2011 или 17.02.2011):

$mydate = '17/02/2011';
$mydate_parts = explode('/', $mydate);
$mydate_timestamp = mktime(0, 0, 0, $mydate_parts[1], $mydate_parts[0], $mydate_parts[2]);

if($mydate == date('d/m/Y'))
{
    echo 'last day to reply';
}
elseif($mydate_timestamp < time())
{
    echo 'post has expired and you cannot reply';

}
else
{
    echo 'post has NOT expired and you can reply';
}
1 голос
/ 17 февраля 2011

Самый простой способ - использовать mktime для преобразования требуемой даты и времени (последняя дата и конечный срок), а затем напрямую сравнивать текущее время с этими значениями.

0 голосов
/ 17 февраля 2011

Что-то вроде следующего, вероятно, самое быстрое для вас.

if( mktime(0,0,0,substr($mydate, 3, 2), substr($mydate, 0, 2), substr($mydate, 6, 4) ) > time() )
0 голосов
/ 17 февраля 2011

Я настоятельно рекомендую вам взглянуть на документацию класса DateTime ; если вы не заинтересованы, хотя; строка среза будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...