DateTime::createFromFormat不像我想要的那样工作


DateTime::createFromFormat is not working as I want

我有这样一个日期:星期三,2014年5月21日。

要在数据库中保存这个日期,我正在尝试将其转换为datetime,如下所示:

$f['date'] = $_POST['date'];
$date = DateTime::createFromFormat('l, j F, Y', $f['date']); 
$date = $data->format('Y-m-d H:i:s'); 

然后我将$date插入到我的数据库中,并且工作正常,date在数据库中像datetime一样保存。

但是现在我想显示日期,所以我想再次转换它,以这种格式:"Wednesday, 21 May, 2014"。

为此,我做我的选择,然后我再次使用DateTime::createFormat转换日期,从DateTime到我的"文本格式":

$readNews = $pdo->prepare("SELECT * FROM news");
$readNews->execute();
while ($readNewsResult  = $readNews->fetch(PDO::FETCH_ASSOC))
{
   $date = DateTime::createFromFormat('l, j F, Y', $readNewsResult['date']);
   ..... //here I have more echos showing title of the news, etc
   echo '<span class="date">'.$date.'</span>';
}

我的问题是日期没有出现…

你看到我哪里做错了吗?

这里不需要DateTime::createFromFormat()。只有当你有一个PHP无法理解的日期格式时,你才需要使用DateTime::createFromFormat()。你已经有了DateTime()可以处理的格式。

所以你所需要做的就是在打印出来的时候改变格式,你将使用DateTime::format():

$date = new DateTime($readNewsResult['date']);
echo '<span class="date">'.$date->format('l, j F, Y').'</span>';