我有一个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" }
所以我想得到这样的东西:09/04/2017
UPDATE:这是我的操作代码(我在twig中有一个包含日期类型输入的表单):
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);
}
5条答案
按热度按时间ee7vknir1#
你在做(几乎是正确的)。为了在这里参考,复制粘贴您的代码:
最后一行返回所需的字符串。如果你想输出,你可以只
echo
它:基本上,您的误解是
format
方法不会修改$date
对象,而只是返回所需的字符串。如果你看一下the documentation for theformat
method,你会发现:返回根据给定格式格式化的日期
它说“returns”,意思是返回到调用的上下文:调用的表达式“被返回值替换”。如果它会在函数中输出它,那么手册会说“打印”或“输出”或“转储”之类的话。你可以阅读更多关于this part of the manual中“返回值”的含义。第一个示例显示了与您尝试执行的操作完全等效的操作:
Example #1使用return
最后,关于
var_dump
的使用:请注意,这是为了调试的目的,通常不是为了向用户显示输出。var_dump
通常只会转储给定对象的“对象的所有公共、私有和受保护属性”。你应该检查thevar_dump
manual pages,它包含了很多例子。t3irkdon2#
使用格式:
或
(我不知道你的语言设置偏好)
f0ofjuux3#
如果您需要与另一个日期时间戳进行比较,只需像这样转换它:
2admgd594#
我还想知道“如何从DateTime对象中只获取日期?“
只是为了好玩:
returns(仅限今天):2023-05-15
g52tjvyc5#
你可以试试strtotime函数:date('d/m/Y',strtotime($date));