我有Datetime对象,其中包含'2013-01-22 13:23:43'
我只想选择2013-01-22并将其恢复到Datetime课程。
我想我可以
$newdatetime = new DateTime($datetime->format('Y-m-d'));
但它看起来有点笨拙。
你有什么想法??
答案 0 :(得分:4)
你做错了。
使用DateTime对象进行处理,并使用您想要的任何格式输出。
意思是,不应该将单个日期传递回新的DateTime对象。
相反,您应该使用普通的DateTime对象(如果对您不重要,可以忽略时间),然后,在完成它之后,只需将其格式化,如下所示:
$date = new DateTime('can haz date plz');
/* Do some processing here using $date */
$date->format("Y-m-d"); //See? No time!
不要启动不需要的对象。如果您不需要DateTime对象中的时间,只需忽略它。
如果必须删除时间,您可以使用DateTime::setTime()
方法:
$date->setTime(0, 0, 0);
答案 1 :(得分:0)
DateTime类构造期望将日期/时间字符串作为第一个参数,将DateTimeZone作为第二个参数。您必须使用格式功能来格式化日期。查看更多信息here。如果您需要相同日期时间对象的副本,可以使用clone,请参阅下面的示例:
$objDateTime = new DateTime('2013-01-22 13:23:43');
$newObj = clone $objDateTime;
echo $newObj->format('Y-m-d');
答案 2 :(得分:-1)
尝试以下,可能会有所帮助
$date = date('Y-m-d');
OR
$date = date('Y-m-d',strtotime($somedate)); // $somedate = '2013-01-22 13:23:43'
答案 3 :(得分:-2)
$jobdate = 2013-01-22 13:23:43;
$pieces = explode(" ", $jobdate);
$pieces[0]; // 2013-01-22
$pieces[1]; // 13:23:43