7

我有一个 PHP 论坛,它采用格式中的日期 dd/mm/yyyy hh:mm:ss。但是,我需要将它作为 DATETIME 插入到 SQL 中,格式为yyyy-mm-dd hh:mm:ss. 如何转换这些数据?

4

4 回答 4

19

您的日期时间格式错误: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');

小心以前的建议。有些是完全错误的,有些可能会导致错误。

于 2012-05-21T16:03:01.690 回答
3

您可以使用 strtotime 和 date 来修改格式。

$new_date = date( "Y-m-d H:i:s", strtotime( $old_date ) );

这样做是获取您的旧日期 ( dd/mm/yyyy hh:mm:ss),将其转换为 unix 时间戳,然后可以与 php date 函数一起使用将日期格式化为所需的格式。

于 2012-05-21T15:46:44.323 回答
2

几种可能的方法中的两种:

  1. 在代码中转换,然后将转换后的值传递给mysql:$mysqldate = date( 'Y-m-d H:i:s', $phpdate );
  2. 让 mysql 使用它的内置函数来完成这项工作: $query = "UPDATE table SET datetimefield = FROM_UNIXTIME($phpdate) ...";
于 2012-05-21T15:46:44.040 回答
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;}

于 2012-05-21T15:50:40.027 回答