2015-11-06 94 views
1

我想回顯一些文本取決於時間戳的結果,使用if/else語句。PHP比較時間變量與if/else

我的邏輯如下;

基於值$data;

  • 如果沒有結果=>回波 '沒有結果'
  • 如果日期是小於今天的日期=>回波 '過期'
  • 否則=>回波 '活性'

我面臨的問題是,目前我的代碼總是顯示'活躍',無論日期是什麼 - 我的代碼到目前爲止我S;

<?php 

$data = get_patronapi_data($id);//this contains a date in the format 31-12-13 

$dataTimestamp = strtotime($data);//convert date to timestamp 
$now = strtotime('today');set timestamo for $now 

//echo strtotime('now'); this outputs 1446820684 
//echo $dataTimestamp; this outputs 1954886400 
//echo $data; this outputs 31-12-13 

//if $data is empty 
if (empty($data)){ 
    echo 'no results'; 
} 
//if $data is not empty but date is less than today 
elseif (!empty($data) && $dataTimestamp < $now) { 
    echo 'expired date is' .$date; //in d-m-y format 
} 
//everything else 
else { 
    echo 'active date is ' .$date; //in d-m-y format 
} 
?> 

我相信答案對於專業人士來說是顯而易見的,但您在這裏有一個新手!

+2

尖端:'的strtotime( '今天')'是CPU時間的浪費。只要做'$ now = time()'。 –

+0

,並檢查了'$ datatimestamp'中的值。如果strtotime失敗,它將返回boolean false,這將在您的<<'測試中被視爲整數'0'。 –

+1

調整'get_patronapi_data()'返回'2013-12-31'而不是'31-12-13' –

回答

1

嘗試是這樣的:

<?php 
function myDateToTs($date){ 
    $data_array = explode("-",$date); 
    return strtotime('20'.$data_array[2].'-'.$data_array[1].'-'.$data_array[0]); 
} 

$data = "31-12-13";  
$dataTimestamp = myDateToTs($data); 
$now = strtotime('today'); 

//echo strtotime('now'); this outputs 1446820684 
//echo $dataTimestamp; this outputs 1954886400 
//echo $data; this outputs 31-12-13 

//if $data is empty 
if (empty($data)){ 
echo 'no results'; 
} 
//if $data is not empty but date is less than today 
elseif (!empty($data) && $dataTimestamp < $now) { 
echo 'expired'; 
} 
//everything else 
else { 
echo 'active'; 
} 
+0

它只是將'31-12-13'轉換爲'2013-12-13'。 'explode'會將$ data sting分割成一個數組,例如'array('31','12','13')'。我使用這個數組來構建一個新的字符串(數組有助於交換數字的順序):'$ data ='20'。$ data_array [2] .'-'。$ data_array [1]。' '。$ data_array [0];' –

+0

沒有。你可以爲它做一個功能(我會改變我的帖子來顯示) –

+0

+1的解釋和功能,謝謝菲利普 - 我永遠不會有我自己的!所有工作如預期一樣!添加功能'過期x前幾天'是否會非常困難?現在推我的運氣我知道了! :) –

0

日期格式DD-MM-YY格式無效strtime

嘗試

美國的月,日和年毫米 「/」 dd「/」y「12/22/78」,「1/17/2006」, 「1/17/6」

日,月和四位數年,用點,凸片或破折號DD [\叔]毫米 [.-] YY 「30-6-2008」, 「22.12 \ t1978」

日,月和兩位數年份,與 點或標籤dd [。\ t] mm「。」 YY 「08年6月30日」, 「22 \ T12 \ T78」

http://php.net/manual/es/datetime.formats.date.php