3

就職してからの時間を示す表があります。

// These are unix epoch times...
$raised = 1360947684;
$now = 1361192598;
$difference = 244914;

$difference営業時間外(例:9-5および週末)は除外する必要があります。

どうすればこれに取り組むことができますか?

4

3 に答える 3

5

あなたがしなければならないことは数で3です。

  1. 開始日を取得し、この日の休憩時間を計算します(営業日である場合)
  2. あなたはあなたの終了日を取り、この日の時間を計算し、
  3. あなたはその間の日数を取り、それらにあなたの営業時間を掛けます(それらだけ、つまり営業日です)

これで完了です

それらのことを行う、添付された小さなクラスを見つけます。エラー処理、タイムゾーン設定、夏時間などがないことに注意してください...

入力:

  • 開始日
  • 終了日

出力:

  • 秒単位の差時間

調整可能な定数:

  • 営業時間
  • 営業日以外の日
于 2013-02-18T22:24:06.207 に答える
0

非常に悪い考えですが、私はphp 5.2を使用しているため、選択の余地はありませんでした。

<?php
date_default_timezone_set('Asia/Seoul');

$start = 1611564957;
$end = 1611670000;
$res = 0;
for($i = $start; $i<$end; $i++){

    $h = date("H", $i);
    if($h >= 9 && $h < 18){
        //echo date("Y-m-d H:i:s", $i) . "<br>";
        $res = $res + 1;
    }
}
echo $res;
于 2021-01-26T07:34:16.533 に答える
-1

を使用しDateTimeます。

これにUNIX時間を使用するのは少しばかげているので、文字通りリメイクする必要がありますDateTime。その日の時間を指定できる相対形式
を検索 します。例:

$date = new DateTime($raised);
$business_start = new DateTime("09:00"); // 9am today
$business_end = new DateTime("17:00"); // 5pm today

残りはあなたが解決するためのものです。

ああ、そして開始/終了の代わりに、おそらく("期間8時間"DateIntervalの値で使用することができますP8H

タイムスタンプを直接使用する場合の問題は、秒のカウンターにコンテキストを割り当てていることです。除外する時刻から逆方向に作業し、事前にタイムスタンプを計算する必要があります。仕事が発生したときのストレージを再設計してみてください。代わりに有効期限を設定しますか?

于 2013-02-18T13:23:24.653 に答える