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

Php 使用DateTime::CreateFromFormat创建日期对象,php,datetime,Php,Datetime,我有一连串的日期: 25/08/2012 在这里,我试图将其转换为DateTime对象,以便将其保存到MySQL数据库。我的后端架构有一个DateOfPrint date列,可以接收此数据 以下是我尝试过的: $eventDate = DateTime::createFromFormat('d/m/y', $fecha->innertext); echo $eventDate; echo语句不会在屏幕上显示任何内容,当试图将其保存到数据库时,该列中不会保存任何内容 有什么建议吗?在插入

我有一连串的日期:

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

以下是我尝试过的:

$eventDate = DateTime::createFromFormat('d/m/y', $fecha->innertext);
echo $eventDate;
echo
语句不会在屏幕上显示任何内容,当试图将其保存到数据库时,该列中不会保存任何内容


有什么建议吗?

在插入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
将日期保存到数据库。

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


您可以引用以获取可用属性,并查看哪个属性最适合您的需要。

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

$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext);
echo $eventDate->format('Y-m-d');
您需要使用大写Y

a一年的完整数字表示,4位数字示例:1999或2003
yA表示年份的两位数示例:99或03 你必须打电话
e、 g

简短回答

$st_time =  date('Y-m-d H:i',$yourdate);
如果您只需要日、月和年,请使用此选项

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

我喜欢你在这个班上的工作。你今天得到我的第40+1@哈哈,谢谢。这真是一个伟大的隐藏宝石,许多人不知道,它是如此有用!您的回答是我应该使用format(),但您的示例是使用createFromFormat(),我应该使用哪一个?@Serg-您使用
createFromFormat()
来获取
DateTime
对象,以及
format()
将该日期对象正确格式化为MySQL
日期列可接受的字符串。感谢您的澄清。:)二者都createFromFormat()用于将字符串解析为datetime对象。和format()从该对象获取(不同的)字符串表示形式
$st_time =  date('Y-m-d H:i',$yourdate);
$st_time =  date('Y-m-d',$yourdate);