在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,但我会在将来查看