-1

date('H:i:s', (time() - $start['time']))スクリプトの開始から経過した時間を表示するために使用しています。

結果が何でtime() - $start['time']あれ-0、17、または02:00:00、02:00:17などのように日付が出力されるものなら何でも。

その理由は何ですか?

4

2 に答える 2

1

timeの数値など、絶対数値のタイムスタンプを返します2012-06-04 16:35:12。開始時間は、同様の数値の絶対タイムスタンプです。一方を他方から引くと、非常に小さな数値になり、これも絶対タイムスタンプになります。1970 年の初め頃の可能性があります。 を使用してそのタイムスタンプをフォーマットするとdate('H:i:s')、 のようなタイムスタンプの時間部分のみが表示されます1970-01-01 02:00:00

UNIX タイムスタンプが実際に何を表しているかを読んでください。

探している時差は の結果ですtime() - $start['time']。これは秒単位であり、 を使用して単純にフォーマットすることはできませんdate()。以下の行に沿った詳細:

$diff = time() - $start['time'];
echo 'Difference in seconds: ' . $diff;
echo 'Difference in minutes: ' . $diff / 60;
echo 'Difference in hours: '   . $diff / 60 / 60;
于 2012-06-04T15:32:45.127 に答える
0

2H オフセットが追加されているようです。

// save current TZ
$current_tz = date_default_timezone_get();
// Use universal time
date_default_timezone_set('UTC');
$t = time();
echo "T:".$t."<br/>";
sleep(2);
echo "T2: ".date('H:i:s', time() - $t );
// return correct TZ
date_default_timezone_set($current_tz);

date_default_timezone_set('UTC') なしでこのコードを試すと、夏時間 (GMT+1) からの期待値 + 1H が得られます。2 つの時刻の差のみが必要な場合は、UTC を両方に使用して差のみを取得するか、現在の時間オフセットを確認して減算することができます。

それが役に立てば幸い

于 2012-06-04T15:37:38.243 に答える