2017-04-09 73 views
1

我有一個類型DateTime()的變量,我只想得到它的日期,以便將它與其他日期變量進行比較。這裏是我想這樣做,但我得到的是我不需要額外的數據:如何僅從DateTime對象獲取日期?

date_default_timezone_set('Africa/Tunis'); 
$date= new \DateTime('today'); 
$date->format('d/m/Y'); 

var_dump($date)回報:object(DateTime)#617 (3) { ["date"]=> string(19) "2017-04-09 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(12) "Africa/Tunis" } 所以我想是這樣的:2017年9月4日

UPDATE:這是我的動作代碼(我有樹枝的形式,包含日期類型的輸入):

public function addArtAction(Request $request) 
    { 

     $article=new article(); 
     $em=$this->getDoctrine()->getManager(); 
     $title=$request->request->get('titre'); 
     $content=$request->files->get('contenu'); 
     $dtePub=$request->request->get('date'); 
     date_default_timezone_set('Africa/Tunis'); 
     $datee= new \DateTime('today'); 
     $date=$datee->format('d/m/Y'); 

     if($dtePub==$date) 
     { 
      $article->setTitre($title); 
      $article->setCorps($content); 
      $article->setEtat(true); 
      $article->setDtePub($date); 
      $em->persist($article); 
      $em->flush(); 
      $this->get('session')->getFlashBag()->add('success','Votre article a été archivé!'); 
     } 
     elseif($dtePub>$date) 
     { 
     $article->setTitre($title); 
     $article->setCorps($content); 
     $article->setEtat(false); 
     $article->setDteArch($date); 
     $article->setDtePub($dtePub); 
     $em->persist($article); 
     $em->flush(); 
     $this->get('session')->getFlashBag()->add('success','Votre article a été publié avec succès!'); 
     } 
     elseif($dtePub<$date) 
     { 
      $this->get('session')->getFlashBag()->add('failure','Vous devez choisir une future date!'); 
     } 
     var_dump($date); 

    } 
+2

'$ date-> format(..)'返回格式化日期的字符串。 – zerkms

+1

[PHP不使用MS Excel日期格式掩碼](http://uk1.php.net/manual/en/function.date.php)....閱讀文檔總是有幫助 –

+0

請停止添加'symfony '標籤,你的問題與symfony無關。 – zerkms

回答

0

使用格式:

$date->format('d/m/Y'); 

$date->format('m/d/Y'); 

(我不知道你的喜好區域)

+1

「你想做什麼?」 ---「所以我想得到這樣的東西:09/04/2017」。 – zerkms

+0

'$ date-> format('d/m/Y');' –

+0

Mark Ba​​ker,對不起,你是對的! –

-4

你可以嘗試的strtotime功能: 日期( 'd/M/Y',的strtotime($日期));

+0

我相信她可以嘗試很多事情,但這個建議確實不幫她。我相信這就是爲什麼你收到所有這些倒票。 –

+0

感謝您的評論保羅這真的很有幫助..我不是一個程序員,我已經開始4個月編碼作爲一種愛好。我在那個論壇上找到了很多幫助,所以我想盡量給出一個想法,以幫助..事實是,我對這一切有點失望,因爲這只是我的第一篇文章。我想我必須成爲一名專家,然後再試着說出一個想法......不用擔心啦:) – gadam76

+0

哈哈,別擔心。我可以想象它有點激動人心。請隨時索要反饋。我肯定會建議你繼續努力,但要保持對成百上千的閱讀你的文本的時間的尊重:盡你最大努力給OP和所有其他讀者提供最有幫助的答案。試着理解這個問題。做研究,如果你不是100%確定測試你的代碼。我最近在短途乘坐地鐵期間從我的手機快速發佈了一些答案。那些收到了一些當之無愧的下降提示:)經驗教訓。我刪除了帖子。謝謝你的努力!歡呼 –

0

你在做(幾乎是正確的)。複製粘貼你的代碼:

date_default_timezone_set('Africa/Tunis'); 
$date= new \DateTime('today'); 
$date->format('d/m/Y'); 

最後一行返回所需的字符串。如果你想輸出,你可以只echo它:

echo $date->format('d/m/Y'); 

基本上你的誤解是,format方法不修改$date對象,但只返回所需的字符串。如果你看一下the documentation for the format method你會發現:

Returns date formatted according to given format

它說:「返回」與這意味着返回調用的上下文:呼叫的表達返回值「被取代」。如果將它輸出到函數中,那麼手冊會說「打印」或「輸出」或「轉儲」。您可以在this part of the manual中閱讀更多關於「返回值」的含義。第一個例子說明你試着做什麼完全等效:

Example #1 Use of return

<?php function square($num) { 
    return $num * $num; 
} 
echo square(4); // outputs '16'. 
?> 

最後,關於使用var_dump:請注意,這是用於調試的目的,通常不用於顯示輸出給用戶。 var_dump通常只會轉儲給定對象的「對象的所有公共,私有和受保護屬性」。你應該檢查the var_dump manual pages它包含很多例子。

相關問題