2

PHP 5.3を使用し、文字列を指定しますSat, 20 Oct 2012 05:00:00 GMT

print $start;
$start = strtotime($start);
var_dump($start);
$hour = date('H:i A', $start);
die($hour);

私のプログラムのコードスニペットはこれを返します:

Sat, 20 Oct 2012 05:00:00 GMT
int(1350709200)
00:00 AM

var_dump正しいですが、日付は悪い答えを返します。

また、そのスニペットを次のように変更することにも注意してください。

print $start;
$start = strtotime($start);
die($start);
$hour = date('H:i A', $start);
die($hour);

戻り値:

Sat, 20 Oct 2012 05:00:00 GMT

最初のダイは空の文字列であるnullを返しますが、これは実際にはブール値のFALSEであるとしか想定できません。

ですから、私は実際に2つの異なる問題を抱えています。同じ答えは、私が死ぬか死ぬかに応じて2つの異なるものを返します。2つvar_dump目は、日付が答えではなくFALSEの答えを受け取っているように見えることvar_dumpです。

ヘルプ?

4

1 に答える 1

1

あなたが言ったように、あなたはタイムゾーンをアメリカ/シカゴに設定しています。strtotimeを呼び出すときは、文字列にGMTを明示的に指定しています。次にタイムスタンプを日付に入れると、タイムスタンプが取得され、GMTの5時間前のアメリカ/シカゴでの時刻が表示されます。これが00:00AMである理由です。

5.3を使用しています。strtotime()とdate()の代わりにDateTimeオブジェクトを使用することをお勧めします。タイムゾーンなどでの作業が少し簡単で、var_dumpsが便利です。ユーザー入力またはdb値からDateTimeを作成し、タイムスタンプの代わりにコードでそれを渡します。

于 2012-10-01T20:32:57.007 に答える