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


Using DateTime::CreateFromFormat to create a date object

我有一个日期字符串:

25/08/2012

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

以下是我尝试过的:

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

echo语句在屏幕上不显示任何内容,当试图将其保存到数据库时,该列中不会保存任何内容。

有什么建议吗?

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

您需要使用大写Y.

Y nbsp;一年的完整数字表示,4位数字 nbsp 示例:1999或2003
y nbsp;一年的两位数表示 nbsp 示例: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

您需要将其格式化为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_dump($eventDate);,它应该向您显示有关该对象的所有信息。

您可以在DateTime类上引用PHP docsm来获得可用的属性,并查看哪一个最适合您的需求。

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

简短回答

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

如果你只想在年月日使用这个

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