使用DateTime :: CreateFromFormat创建日期对象

时间:2012-08-22 13:33:32

标签: php datetime

我有一个日期字符串:

25/08/2012

在这里,我正在尝试将其转换为DateTime对象,以便将其保存到MySQL数据库中。我的后端架构有一个DateOfPrint date列,可以接收此数据。

这是我尝试过的:

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

echo语句在屏幕上没有显示任何内容,并且在尝试将其保存到数据库时,该列中没有保存任何内容。

有什么建议吗?

5 个答案:

答案 0 :(得分:10)

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

您需要使用大写Y.

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

你必须致电DateTime::format();
e.g。

<?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

答案 1 :(得分: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将日期保存到数据库。

答案 2 :(得分:1)

$eventDate是一个对象,而不是一个字符串。您需要访问代码中元素的属性才能正确地将其值插入表中或将其回显。在那个注释中,可以使用var_dump($eventDate);,它应该向您显示有关该对象的所有信息。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

简短回答

$st_time =  date('Y-m-d H:i',$yourdate);

如果您只想使用日期和年份

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