我在PHP中有一个论坛,它接受表格中的日期
dd/mm/yyyy hh:mm:ss
。但是,我需要将其作为DATETIME以SQL格式yyyy-mm-dd hh:mm:ss
插入。我该如何转换这些数据?
答案 0 :(得分:17)
您的日期时间格式错误:dd/mm/yyyy hh:mm:ss
。可能你的意思是d/m/Y H:i:s
如果你有5.3+版本,有安全的方法将日期时间转换为另一种格式。这是一个例子:
$timestamp = '31/05/2001 12:22:56';
$timestamp = DateTime::createFromFormat('d/m/Y H:i:s', $timestamp);
echo $timestamp->format('Y-m-d H:i:s');
或者如果你喜欢更多的程序方式:
$timestamp = '31/05/2001 12:22:56';
$timestamp = date_create_from_format('d/m/Y H:i:s', $timestamp);
echo date_format($timestamp, 'Y-m-d H:i:s');
小心以前的建议。有些是完全错误的,有些可能会导致错误。
答案 1 :(得分:3)
您可以使用strtotime和date来重新格式化。
$new_date = date( "Y-m-d H:i:s", strtotime( $old_date ) );
这样做是取旧日期(dd/mm/yyyy hh:mm:ss
),将其转换为unix时间戳,然后可以与php date函数一起使用,将日期格式化为所需的格式。
答案 2 :(得分:1)
几种可能的方式中的两种:
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
$query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";
答案 3 :(得分:1)
如果你有类似上述格式的日期时间,那么你只需要使用以下功能。
function localToMysql($dateTime){
$date_chunks = explode('/', $dateTime);
$time_chunks = explode(' ', $date_chunks[2]);
$final_format = $time_chunks[0] . "-" . $date_chunks[1] . "-" . $date_chunks[0] . " " . $time_chunks[1];
返回$ final_format; }