2012-08-22 70 views
4

我有一个日期的字符串:使用日期时间:: CreateFromFormat创建日期对象

25/08/2012 

在这里,我试图将其转换为一个DateTime对象,以便将它保存到MySQL数据库。我的后端架构有一个DateOfPrint date列准备好接收这些数据。

这是我已经试过:

$eventDate = DateTime::createFromFormat('d/m/y', $fecha->innertext); 
echo $eventDate; 

echo语句不显示在屏幕上任何东西,并试图将其保存到数据库时,没有被保存在该列。

有什么建议吗?

回答

10

您的$eventDate包含一个打印为空字符串的布尔值(假)。

您需要使用一个大写Y.

Ÿ     一年的完整数字表示,4位       例子:1999年或2003
Ÿ     两一年的数字表示         例如:99或03

而你必须致电DateTime::format();
例如

<?php 
$fecha = new StdClass; 
$fecha->innertext = '25/08/2012'; 

$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
if (false===$eventDate) { 
    die('invalid date format'); 
} 
echo $eventDate->format('Y-m-d'); 

打印

2012-08-25 
+0

你的答案说我应该使用format(),但你的例子是使用createFromFormat()我应该使用哪一个? – sergserg

+0

@Serg - 您可以使用'createFromFormat()'获取'DateTime'对象,'format()'将该日期对象正确格式化为MySQL'DATE'列可接受的字符串。 – nickb

+0

感谢您的澄清。 :) – sergserg

3

您需要格式化它一个MySQL列,才能将其插入:

// Need upper case Y here, thanks to VolkerK for pointing that out 
$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
$eventDate = $eventDate->format('Y-m-d'); // I think this is the correct format 

然后你可以使用$eventDate保存日期到数据库中。

+1

我爱上了这个类的工作。你今天得到我的* 40th * +1! – Fluffeh

+0

@Fluffeh - 哈,谢谢。这真是一个很多人都不知道的伟大的隐藏宝石,它非常有用! – nickb

1

$eventDate是一个对象,而不是一个字符串。您将需要访问代码中元素的属性,以便能够将其值正确地插入表中或将其回显出来。在那个笔记上,你可以使用使用var_dump($eventDate);这应该告诉你所有关于该对象的知识。

您可以参考PHP docsm on the DateTime class以获取可用属性并查看哪一个最适合您的需求。

0
$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext); 
echo $eventDate->format('Y-m-d'); 
0

简短的回答

$st_time = date('Y-m-d H:i',$yourdate); 
如果你想只有天月和年使用

这个

$st_time = date('Y-m-d',$yourdate); 
+0

尽管你的例子可能有效,但OP特别要求关于[DateTime类](http://www.php.net/manual/en/class.datetime.php) – MrWhite

相关问题