1

mktime 関数に少し問題があります。私の本番サーバーで、次を実行すると:

echo '<p>' . mktime(24, 0,0, 8,29,2009) . ' - 12pm</p>';
echo '<p>' . mktime(23, 0,0, 8,29,2009) . ' - 11pm</p>';
echo '<p>' . mktime(22, 0,0, 8,29,2009) . ' - 10pm</p>';

そして、これらのタイムスタンプを読み取り可能な形式に変換し直します (迅速な変換にはwww.unixtimestamp.comを使用します)。時間はすべて 1 時間ずれています。私は当初、これは 2400 VS 0000 の問題だと思っていましたが、他の日付がずれていることは説明できません。

何か案は?

4

3 に答える 3

5

サーバーのタイムゾーンが予想と異なります。Unix のタイムスタンプは 1.1.1970 00:00:00 GMTからの秒単位で測定されるため、コードに非表示のタイム ゾーン変換があります。次のいずれかを実行できます

于 2009-07-13T18:04:43.547 に答える
0

私の問題はmktime、日と月を先行ゼロで入力することでした。関数よりも間違った結果が返されました。1つのオプションは、次のような関数で先行ゼロを削除することです

$str = ltrim($str, '0');

出典:文字列の先行ゼロをすべて削除する方法

また

$var = (int)$var;

ソース: PHP は最初のゼロを削除します

私はソウルマージから1つの可能性を使用しました:

$date = new DateTime($year . '-' . $month . '-' . $day . ' ' . $hour . ':' . $minute . ':' . $seconds);
$match_time = $date->getTimestamp();

ただし、タイムゾーンは常に設定する必要がありますdate_default_timezone_set()( DateTime.

于 2013-08-07T11:15:19.917 に答える
0

コマンドラインから次を実行したところ、次の(予想される)出力が得られました。それらを実行するとどうなりますか?

$ php -r "echo date('H:i:s Y-m-d', mktime(24, 0, 0, 8, 29, 2009));"
00:00:00 2009-08-30

$ php -r "echo date('H:i:s Y-m-d', mktime(23, 0, 0, 8, 29, 2009));"
23:00:00 2009-08-29

$ php -r "echo date('H:i:s Y-m-d', mktime(22, 0, 0, 8, 29, 2009));"
22:00:00 2009-08-29
于 2009-07-13T18:06:38.303 に答える