4

我有一串日期:

25/08/2012

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

这是我尝试过的:

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

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

有什么建议么?

4

5 回答 5

11

$eventDate包含一个 boolean(false),它被打印为空字符串。

您需要使用大写的 Y。

Y 年份的完整数字表示,4 位数字示例:1999 或 2003
y 年份的两位数字表示示例: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
于 2012-08-22T13:38:59.320 回答
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将日期保存到数据库中。

于 2012-08-22T13:35:43.463 回答
1

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

您可以参考DateTime 类上的 PHP 文档以获取可用属性并查看哪一个最适合您的需求。

于 2012-08-22T13:35:46.327 回答
0
$eventDate = DateTime::createFromFormat('d/m/Y', $fecha->innertext);
echo $eventDate->format('Y-m-d');
于 2012-08-22T13:38:49.900 回答
0

简短的回答

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

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

$st_time =  date('Y-m-d',$yourdate);
于 2012-08-22T13:39:40.433 回答