0

私はphpにかなり慣れていないので、テストvr本番サーバーで時間の表現が異なるという問題があります。タイムレコーダーのように、労働時間の計算を行っています。パンチインからパンチアウトまで = 総労働時間。私はこのコードを使用しています:

$time1 = $_POST['txt_starttime'];
$time2= $_POST['txt_endtime'];

$TotTime=date('H:i',strtotime($time2)-strtotime($time1));

午後 11 時 45 分 ~ 午後 11 時 50 分 = 5 分 私のテスト サーバーでは問題なく動作し、データベースに 00:05 が保存されます。本番サーバーでは、05:05:00 が表示されます フォーマット変数で遊んだ後、1​​7:05:00 が表示されます

これはサーバー側の設定ですか...助けてください!!!

4

3 に答える 3

1

サーバーはデフォルトの GMT TimeZone を使用しているようです。ロジックの違いを一致させるか、違いを調整するようにサーバーを構成する必要があります。

したがって、ホーム タイム ゾーンが+530時間の場合は、次のように に追加する必要があり+ 5 hours 30 minutesますstrtotime()

if ($production)
    $basetime = "+ 5 hours 30 minutes";
else
    $basetime = ""

また、プロダクションのフラグを に設定する必要がありますtrue

それ以外の場合は、関数を利用しdate_default_timezone_setてタイムゾーンを渡すことができます。

date_default_timezone_set('Asia/Calcutta');
于 2013-02-15T15:53:15.853 に答える
1

タイムゾーンを設定する必要があります

date_default_timezone_set('Etc/GMT+1');
于 2013-02-15T15:53:07.713 に答える
0

dateUNIXタイムスタンプから時刻を取得します。UNIXタイムスタンプは、1970年1月1日からの秒数です。それにより、それは相対的な時間です。の結果date絶対時間です。

期間、つまり相対時間を表す必要があります。絶対時間にフォーマットしないでください。作成しているのは、 1970年1月1日00:05の絶対タイムスタンプ00:05であり、適切なタイムゾーンで表されている場合、その時間と分の部分が発生します。別のタイムゾーンでは、それは異なります。

300(秒)から(5分)に移動するには、数学()を使用して変換します300 / 60

于 2013-02-15T15:56:16.430 に答える