2017-03-22 12 views
1

私のdbからdatetime値がエコーされたので、私は今この値を表示して、自分のフォームのdatetime-localフィールドに編集しようとしています。 DBから 日時vaueは次のように設定されている: 22/3/2017午前10時00分00秒php date&strtotime関数の結果が1970-00-00 00:00の値

ただし、以下のコードを使用しようとした後に、IMは、この残さ: 1970-01-01T01:00:00

$dat = date("Y-m-d\TH:i:s", strtotime($_GET["dat"])); 

方法&なぜこの機能は、フォームフィールドに'22/2017分の3 10' 時00分を表示するには、正しく動作していませんか?

+0

日付の形式が正しくありません。 22ヶ月はありません。これらの日付形式を処理する方法については、上記の複製を参照してください。 –

+0

は '$ dat = date( 'Y-m-d \ TH:i:s'、strtotime('22/3/2017 10:00:00 '));'同じ結果ですか? –

+0

2番目のパラメータは、整数、より具体的にはunixタイムスタンプでなければなりません。指定されていない場合、現在のタイムスタンプが使用されます。現在、 'strtotime'を立てているのでエラーになります。ストーリーが短いと、 'strtotime'の入力が間違っています。 – Andrew

答えて

2

使用DateTime::createFromFormat

$date = DateTime::createFromFormat('d/m/Y H:i:s', '22/3/2017 10:00:00'); 
$dat = $date->format('Y-m-d\TH:i:s'); 
echo $dat; 

strtotimeが前提実際のフォーマットについての区切り文字をもとになりますので、あなたのコードが動作していない:

  • m/d/Y - アメリカの形式
  • d.m.Yd-m-Y - ヨーロッパ
+1

は完璧に働き、strtotimeに関する情報をありがとう! – sanitizer

0

strtotime()は特定の日付形式のみを変換できるので機能しません。

manualを確認してください。サポートされている日付形式のリストについては、hereをご覧ください。

あなたの日付形式は、私にサポートされているものに含まれていないようです。

例:

strtotime("03/22/2017 10:00:00"); // Works: returns 1490173200 
strtotime("22/3/2017 10:00"); // Doesn't work: returns false 

あなたのDB内の日付形式を変更したり、それを動作させるためにサポートされている形式のいずれかにそれをフォーマットするかがあります。

+0

これは答えよりも多くのコメントです。なぜこれが間違っているのかを正しく説明していないし、それを修正するために表示されていません。 –

+0

更新されました。ありがとう@JohnConde – Napolux