在PHP中将数据库日期格式转换为yyyy-mm-dd并返回到dd-mm-yyyy

在PHP中将数据库日期格式转换为yyyy-mm-dd并返回到dd-mm-yyyy,php,mysql,Php,Mysql,基本上,我有一个用户选择的日期,格式如下: 01-12-2013 (dd-mm-yyyy) 我需要将其格式化为数据库的yyyy-mm-dd格式,因为它是一种日期类型,如下所示: 2013-12-01 $processdate = DateTime::createFromFormat('dd-mm-yy', $date); echo $processdate->format('yy-mm-dd'); 我将日期存储在一个变量中,我们称之为$date 我尝试过使用createFromFor

基本上,我有一个用户选择的日期,格式如下:

01-12-2013 (dd-mm-yyyy)
我需要将其格式化为数据库的yyyy-mm-dd格式,因为它是一种日期类型,如下所示:

2013-12-01
$processdate = DateTime::createFromFormat('dd-mm-yy', $date);
echo $processdate->format('yy-mm-dd');
我将日期存储在一个变量中,我们称之为
$date

我尝试过使用createFromFormat函数,如下所示:

2013-12-01
$processdate = DateTime::createFromFormat('dd-mm-yy', $date);
echo $processdate->format('yy-mm-dd');
但我得到一个错误,说:

Fatal error: Call to a member function format() on a non-object

有人能告诉我为什么我没有正确使用它吗?

这是我用来转换SQL日期的

function human_date_to_sql($date) {
  if($date == '') return '';

  if(stristr($date, "-")) return $date;

  $date_parts = explode('/', $date);
  $sql_date = $date_parts[2] . "-" . $date_parts[1] . "-" . $date_parts[0];

  return $sql_date;
}

function sql_date_to_human($date) {
  if($date == '') return '';

  if(stristr($date, "/")) return $date;

  $date_parts = explode('-', $date);
  $human_date = $date_parts[2] . "/" . $date_parts[1] . "/" . $date_parts[0];

  return $human_date;
}

这就是我用来转换SQL日期的方法

function human_date_to_sql($date) {
  if($date == '') return '';

  if(stristr($date, "-")) return $date;

  $date_parts = explode('/', $date);
  $sql_date = $date_parts[2] . "-" . $date_parts[1] . "-" . $date_parts[0];

  return $sql_date;
}

function sql_date_to_human($date) {
  if($date == '') return '';

  if(stristr($date, "/")) return $date;

  $date_parts = explode('-', $date);
  $human_date = $date_parts[2] . "/" . $date_parts[1] . "/" . $date_parts[0];

  return $human_date;
}

MySQL可以通过以下功能为您做到这一点:

SELECT STR_TO_DATE('01-05-2013','%d-%m-%Y');

MySQL可以通过以下功能为您做到这一点:

SELECT STR_TO_DATE('01-05-2013','%d-%m-%Y');
试试这个:

    function dateInsert($Date, $In = '-', $Out = '-')
        {
            if ($Date)
                return implode($Out, array_reverse(explode($In, $Date)));
            else {
                return false;
            }
        }
$date = '01-12-2013';
echo dateInsert($date);
您可以使用此功能更改日期。 希望这会有所帮助。

试试这个:

    function dateInsert($Date, $In = '-', $Out = '-')
        {
            if ($Date)
                return implode($Out, array_reverse(explode($In, $Date)));
            else {
                return false;
            }
        }
$date = '01-12-2013';
echo dateInsert($date);
您可以使用此功能更改日期。 希望这会有所帮助。

记录在失败时返回
false
,这正是这里发生的情况。当您试图在
false
上调用
format
时,程序会崩溃,这没有任何意义

原因是您的格式字符串错误。对于给定的输入,正确的格式字符串是
“d-m-Y”
(格式字符串也记录在同一页上)

当然,这意味着您的输出格式字符串也是错误的:它应该是
“Y-m-d”

被记录为在失败时返回
false
,这正是这里发生的情况。当您试图在
false
上调用
format
时,程序会崩溃,这没有任何意义

原因是您的格式字符串错误。对于给定的输入,正确的格式字符串是
“d-m-Y”
(格式字符串也记录在同一页上)


当然,这意味着您的输出格式字符串也是错误的:它应该是
“Y-m-d”

您可以参考此链接您可以参考此链接真的吗?这是一种相对幼稚的方法。为什么不使用内置的日期库?如果您想为人力输出设置不同的日期格式,该怎么办?这些函数已经存在于PHP中——为什么要重写它们呢?它们也存在于MySQL中。@colinmoreli,最初需要做很多其他事情,然后最终归结为这两个函数。我不知道到目前为止发生的事,将来会查出来吗?这是一种相对幼稚的方法。为什么不使用内置的日期库?如果您想为人力输出设置不同的日期格式,该怎么办?这些函数已经存在于PHP中——为什么要重写它们呢?它们也存在于MySQL中。@colinmoreli,最初需要做很多其他事情,然后最终归结为这两个函数。虽然我不知道STR\u TO\u DATE,但我会在将来查看