7

フォームのような日付を取る PHP のフォーラムがあります dd/mm/yyyy hh:mm:ss。ただし、SQL の場合は DATETIME として as の形式で挿入する必要があります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 の日付関数で使用して、日付を目的の形式にフォーマットすることです。

于 2012-05-21T15:46:44.323 に答える
2

考えられるいくつかの方法のうちの 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 に答える