2015-05-16 2 views
1

я не могу сравнить даты в php.My коде выглядит следующим образом:сравнения Даты в PHP не может быть сделано

$sqldt="select to_char(sysdate-2,'dd-mon-yyyy') from dual"; 
$stmtdt = $obj->executeQuery($sqldt); 
$rowdt = oci_fetch_array($stmtdt,OCI_BOTH); 

$startdate = date('d/m/y', strtotime($rowdt[0])); 
$enddate=date('d/m/y'); 
$workdate=date('d/m/y', strtotime($wdate)); //here wdate is our selected date which is passed from previous page. 

echo "start date=".($startdate); //showing correctly 

echo "end date=".($enddate);//showing correctly 

echo "work date=".($workdate);//showing correctly 


$S_WORKDATE=strtotime($workdate); 
$S_STARTDATE=strtotime($startdate); 
$S_ENDDATE=strtotime($enddate); 

теперь, когда я сравнить даты как этого

if($S_WORKDATE<$S_ENDDATE) 
{ 
    echo "worked"; 
} 
else 
{ 
    echo "failed"; 
} 

любого сравнение, как «<» или '>' или '< =' или '> =' возвращает неправильный результат после выполнения кода. help help

ответ

0

/ не работает с функцией strtotime() в формате dd/mm/yyyy.

Таким образом, Вы можете изменить / к -

$startdate = date('d-m-y', strtotime($rowdt[0])); 
$enddate=date('d-m-y'); 
$workdate=date('d-m-y', strtotime($wdate)); 

ИЛИ U может непосредственно сравнивать как

if($workdate<$enddate) 
{ 
    echo "worked"; 
} 
else 
{ 
    echo "failed"; 
} 
+0

Большое вам спасибо ... это сработало! –

+0

Объяснение могло бы помочь. '/' __does__ работает с strtotime(), но когда strtotime() встречает '/' в дате формата 2: 2: 4, он рассматривает формат как формат США ('m/d/Y'); когда он встречает '-' в дате формата 2: 2: 4, он рассматривает формат как европейскую дату (dmY) .... как объяснено в [документации PHP] (http://php.net/manual/en/ datetime.formats.date.php) –

+0

@DewDrop Или вы могли бы просто переключить m и d вокруг. Он работает со слэшами, они просто используют нотацию США для даты. м/д/г –

0

Пожалуйста, посмотрите на код, который я привел ниже,

$startdate = new date('d/m/y'); 
$enddate = new date('d/m/y'); 
$startdate ->diff($enddate); 

if($startdate > $enddate) 
echo "startdate is bigger"; 
else 
echo "enddate is bigger"; 

Edited Пожалуйста, посмотрите на эту ссылку для получения дополнительной информации: http://php.net/manual/en/datetime.diff.php

Я надеюсь, что это поможет.

+0

Пожалуйста, вы можете объяснить этот код: $ StartDate -> Diff ($ EndDate); –

+0

@DewDrop, мы создаем две даты непосредственно, не используя преобразование из строки в время. Затем после этого с использованием метода diff() php, который используется для получения разницы между датой, а затем вы можете использовать эти возвращаемые значения для сравнения, какая дата больше. –

0

Даты в м/г/г или DMY форматы устраняются, глядя на разделитель между различными компонентами: если разделителем является слэш (/), тогда Предполагается американский m/d/y; тогда как если разделитель является тире (-) или точкой (.), то предполагается европейский формат d-m-y .

Так что в основном ваш месяц и день меняются.

Вы хотите использовать ...

$enddate=date('m/d/y'); 
Смежные вопросы