0

基本的に、ユーザーが選択した日付があり、次のようにフォーマットされています。

01-12-2013 (dd-mm-yyyy)

そして、次のような日付タイプとして、DB の yyyy-mm-dd 形式にフォーマットする必要があります。

2013-12-01

日付を変数に保存し、それを呼び出しましょう$date

次のように createFromFormat 関数を使用してみました。

$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

誰かが私がそれを正しく使用していない方法を教えてもらえますか?

4

4 に答える 4

2

createFromFormat失敗した場合に戻るように文書化されてfalseいますが、これはまさにここで起こっていることです。を呼び出そうとするとプログラムが爆発しますformatfalse、これは意味がありません。

これは、フォーマット文字列が間違っているためです。指定された入力の正しいフォーマット文字列は次のとおりです"d-m-Y"(フォーマット文字列についても同じページに記載されています)。

もちろん、これは出力フォーマット文字列も間違っていることを意味します"Y-m-d"

于 2013-03-06T13:33:16.667 に答える
1

STR_TO_DATEMySQL は次の関数を使用してそれを行うことができます。

SELECT STR_TO_DATE('01-05-2013','%d-%m-%Y');
于 2013-03-06T13:32:54.777 に答える
0

これは、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;
}
于 2013-03-06T13:32:07.627 に答える
0

これを試して:

    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);

この機能を使用して日付を変更できます。これが役立つことを願っています。

于 2013-03-06T13:33:06.157 に答える