Php 如何仅从DateTime对象获取日期?

Php 如何仅从DateTime对象获取日期?,php,datetime,Php,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

我有一个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)“非洲/突尼斯”}
所以我想得到这样的东西:2017年4月9日

更新:这是我的操作代码(我在twig中有一个包含日期类型输入的表单):

public function addArtAction(请求$Request)
{
$article=新文章();
$em=$this->getDoctrine()->getManager();
$title=$request->request->get('titre');
$content=$request->files->get('contentnu');
$dtePub=$request->request->get('date');
日期默认时区设置(“非洲/突尼斯”);
$datee=new\DateTime(“今天”);
$date=$datee->格式('d/m/Y');
如果($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->setdSearch($date);
$article->setDtePub($dtePub);
$em->persist($article);
$em->flush();
$this->get('session')->getFlashBag()->add('success','Votre article aétépublicéavec success!');
}
elseif($dtePubget('session')->getFlashBag()->add('failure','Vous devez choiser une future date!');
}
var_dump(日期);
}
使用格式:

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


(我不知道您的区域设置首选项)

您可以尝试strotime功能: 日期('d/m/Y',strotime($date));

您正在这样做(几乎正确)。为供参考,请在此处粘贴您的代码副本:

date_default_timezone_set('Africa/Tunis');
$date= new \DateTime('today');
$date->format('d/m/Y');
最后一行返回所需的字符串。如果要输出该字符串,只需
echo
it即可:

echo $date->format('d/m/Y');
基本上,您的误解是
format
方法不会修改
$date
对象,而只返回所需的字符串。如果查看,您会发现:

返回根据给定格式格式化的日期

它说的是“returns”,意思是返回到调用的上下文:调用的表达式“被”替换为返回值。如果它在函数中输出它,那么手册会说“prints”或“outputs”或“dumps”。您可以阅读更多关于中“返回值”的含义。第一个示例显示了与您尝试执行的操作完全相同的操作:

示例#1退货的使用

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


最后,关于
var\u dump
的使用:请注意,这是为了调试目的,通常不用于向用户显示输出。
var\u dump
通常只转储“对象的所有公共、私有和受保护属性”您应该检查它是否包含许多示例。

$date->format(..)
返回一个带格式日期的字符串…..阅读文档总是有助于您停止添加
symfony
标记,您的问题与symfony无关。请删除您在上次更新中添加的大代码块,这无助于澄清问题。您的其他用户的时间是宝贵的,这是浪费。“你想做什么?”——“所以我想得到这样的东西:2017年4月9日”。我尝试了date()方法。它需要一个字符串$date传递给它,如下所示:date($date,$timestamp)格式('d/m/Y')不会改变任何事情:我告诉我只想得到日期,不管是2017年4月9日还是2017年4月9日/2017@Susan
$datee=new\DateTime('today');$date=$datee->format('d/m/Y')
-这段代码完全有效。这是你打破的其他东西。非常有效!谢谢!我相信她可以尝试很多东西,但这个建议对她没有帮助。我相信这就是你收到所有这些反对票的原因。谢谢你的评论。保罗,这真的很有帮助。我不是程序员,我已经开始4个月把编码作为一种爱好。我在那个论坛上我得到了很多帮助,所以我想试着给出一个想法来帮助大家。事实上,我对这一切有点失望,因为这只是我的第一篇帖子。我想在我再次尝试说出一个想法之前,我必须成为一名专家……不用担心,干杯:)哈哈,别担心。我可以想象这会有点让人泄气。请随时寻求反馈。我肯定会建议你继续尝试,但要尊重可能阅读你文章的成百上千的人:尽最大努力为OP和所有其他读者提供最有帮助的答案。试着理解问题n、 做研究,如果你不能100%确定测试你的代码。我最近在一次短暂的地铁旅行中从我的手机上快速发布了一些答案。这些答案得到了一些当之无愧的反对票:)吸取的教训。我删除了这些帖子。感谢你的努力!干杯谢谢你花时间给我这些建议。我现在明白了,这就是问题所在正确的帮助方式,同时变得更好:)…Thanx;)
echo $date->format('d/m/Y');
<?php function square($num) {
  return $num * $num;
}
echo square(4);   // outputs '16'.
?>