Tengo una variable de tipo DateTime() y quiero obtener solo la fecha para compararla con otra variable de fecha. Así es como traté de hacer eso, pero obtengo datos adicionales que no necesito:
date_default_timezone_set('Africa/Tunis'); $date= new \DateTime('today'); $date->format('d/m/Y'); var_dump($date) devuelve: object(DateTime)#617 (3) { ["date"]=> string(19) "2017-04-09 00:00:00" ["timezone_type"]=> int(3) ["timezone"]=> string(12) "Africa/Tunis" } Así que quiero obtener algo como esto: 04/09/2017
ACTUALIZAR: Este es mi código de acción (tengo un formulario en twig que contiene una entrada de tipo de fecha):
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); }Lo estabas haciendo (casi bien). Para referencia aquí, copie y pegue su código:
date_default_timezone_set('Africa/Tunis'); $date= new \DateTime('today'); $date->format('d/m/Y'); La última línea devuelve la cadena deseada. Si desea generar eso, simplemente puede echo :
echo $date->format('d/m/Y'); Básicamente, su malentendido fue que el método de format no modifica el objeto $date , sino que solo devuelve la cadena deseada. Si observa la documentación del método de format , encontrará:
Devuelve la fecha formateada de acuerdo con el formato dado
Dice "retorna" con lo que significa devuelto al contexto de la llamada: la expresión de la llamada 'se sustituye' por el valor devuelto. Si lo generara en la función, entonces el manual habría dicho algo como "imprime" o "produce" o "volca". Puede leer más sobre lo que significa 'devolver un valor' en esta parte del manual . El primer ejemplo muestra el equivalente exacto de lo que intentó hacer:
Ejemplo #1 Uso de return
<?php function square($num) { return $num * $num; } echo square(4); // outputs '16'. ?>
Por último, con respecto al uso de var_dump : tenga en cuenta que esto está destinado a fines de depuración y normalmente no para mostrar la salida al usuario. var_dump normalmente simplemente volcará "Todas las propiedades públicas, privadas y protegidas de los objetos" del objeto dado. Debe consultar las páginas del manual var_dump , contiene muchos ejemplos.
Formato de uso:
$date->format('d/m/Y');o
$date->format('m/d/Y');(No sé sus preferencias locales)
Si necesita comparar con otra marca de fecha y hora, simplemente conviértala de esta manera:
<?php $literal = "1 week ago"; $date = new DateTime($literal); $date->setTime(0,0); $timestamp = $date->getTimestamp(); ?>