13

日付が英国形式で入力されるフォームがあり、それを変換する必要があります

yyyy-mm-dd

たとえば、入力された日付は次のとおりです。データベース挿入用31/03/2013に変換したい。'2013-03-31'

私は時々しか奇妙に動作する次のものを使用しています:

$dateInput = $mysqli->real_escape_string($_POST['date']);
$show_date = date('Y-m-d', strtotime($dateInput));

これを行うより良い方法はありますか?

4

7 に答える 7

18

DateTime::createFromFormatを使用することをお勧めします。

$show_date = DateTime::createFromFormat('d/m/Y', $dateInput)->format('Y-m-d');
于 2013-03-28T07:28:24.117 に答える
11

それを試してみてください。

$dateInput = explode('/','31/03/2013');
$ukDate = $dateInput[2].'-'.$dateInput[1].'-'.$dateInput[0];
于 2013-03-28T07:30:13.897 に答える
3

以下は、奇妙なことに時々しか機能しません:

$show_date = date('Y-m-d', strtotime($dateInput));

これは他の短い方法ではありません....そして私はこれを一生使っています..今まで奇妙なことが起こっていることに気づいていません..他に何か問題があるかどうかを確認してください.

それ以外の場合は

$timestamp = strtotime(str_replace('/', '.', $dateInput));
$mysql_date = date('Y-m-d', $timestamp); 
于 2013-03-28T07:28:43.030 に答える
2

これを試して :

$dte  = '28/03/2013';
$dt   = new DateTime();
$date = $dt->createFromFormat('d/m/Y', $dte);
echo $date->format('Y-m-d');

出力:2013-03-28

于 2013-03-28T08:18:06.180 に答える
1
$date_array = explode("/",$your_date); // split the array
$var_day = $date_array[0]; //day seqment
$var_month = $date_array[1]; //month segment
$var_year = $date_array[2]; //year segment
echo $new_date_format = "$var_year-$var_day-$var_month"; // join them  together

これはうまくいきます

于 2016-02-24T13:48:19.763 に答える
1

PHP 5.3 以降

DateTime::createFromFormatを使用します。date() 構文を使用して正確なマスクを指定し、入力文字列の日付を解析することができます。

PHP 5.2 以下

substr() を使用して手動で要素 (年、月、日、時、分、秒) を解析し、タイムスタンプを作成するmktime()に結果を渡す必要があります。

于 2013-03-28T07:29:29.643 に答える
0

いくつかの代替方法。両方の出力 2013-03-31:

方法 1 - 「ほら、機能なし」

<?php
    $in = '31/03/2013';
    echo $in[6].$in[7].$in[8].$in[9].'-'.$in[3].$in[4].'-'.$in[0].$in[1];
    ?>    

方法 2 - 正規表現

<?php
    echo ($output = preg_replace('!^([0-9]{2})/([0-9]{2})/([0-9]{4})$!',"$3-$2-$1",$input));
?>
于 2013-03-28T07:42:06.453 に答える