2014-03-26 62 views
1

我一直在頁面之間傳遞用戶選擇的日期並調用整個日期沒有任何問題。現在我想只需要一年,從「沒有fromdate」和「TODATE」我有下面的代碼通過使用下面的只在頁面php和顯示年份之間通過日期

'" . $fromdate ."' 
要麼通過

<? 
     $fromdatePost = $_POST["report_date_from"]; 
     $todatePost = $_POST["report_date_to"]; 

     $fromdate = $_POST["report_date_from"] .' 00:00:00'; 
     $fromdate = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $fromdate); 

     $todate = $_POST["report_date_to"] .' 00:00:00'; 
     $todate = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $todate); 
     ?> 

然後我顯示日期的日期

'" . $fromdate ."' 

我如何得到它只是顯示年份,而不是整個日期?

感謝您的幫助!

+1

你一定很討厭使用正則表達式來格式化日期。 –

+0

您應該使用'strtotime'和'date'或'DateTime'功能 – cmorrissey

+0

請參閱Tim Burch的回答。 如果您想要稍微多一點的OO方法(儘管老實說,stringtotime()有點容易使用),那麼使用PHP現在具有的日期時間對象也可以實現同樣的事情。如果你想OO讓我知道,我會發佈一個答案。 – MER

回答

1

您可以使用下面的代碼來獲取一年:

$year = date('Y', strtotime($fromdate)); 

套用第一個評論,正則表達式是沒有必要在這裏。

+0

感謝您的幫助!我在這裏有一個額外的問題http://stackoverflow.com/questions/22673658/passing-date-from-php-page-to-export-to-excel-document希望你也可以幫忙! – 5ummer5

1

的面向對象的方式來做到這一點如下:

$date = new DateTime($fromdate); 
$year = $date->format('Y'); 

我雖然普遍感到的strtotime更方便一點。 注意:如果您未將任何參數傳遞給DateTime()對象,它將使用當前日期&時間填充。

相關問題