DateTime :: createFromFormat无法正常工作

时间:2014-05-21 20:48:48

标签: php date datetime

我有这种格式的日期: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,并且工作正常,日期会像数据库中的datetime一样保存。

但是现在我想要显示日期,所以我想以这种格式再次改变它:“2014年5月21日星期三”。

为此,我正在做我的选择,然后再次使用DateTime :: createFormat将日期转换为我的“文本格式”:

$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>';
}

我遇到的问题是它出现的日期......

你看到我在这里做错了吗?

1 个答案:

答案 0 :(得分:4)

此处您不需要DateTime::createFromFormat()。当您有PHP不理解的格式的日期时,您只需要使用DateTime::createFromFormat()。您已有格式DateTime()可以处理。

所以您需要做的就是在打印时更改格式,您将使用DateTime::format()进行格式化:

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