これは少し圧倒されるかもしれませんが、@Amine Matmati が提供するリンクには、必要なすべてのツールがあります。これを使用すると、開始のタイムスタンプから現在までの毎日を簡単に見て回ることができ、週末や営業時間外をスキップできます。
少し不格好ですが、うまくいきます。
strtotime(str, timestamp)
ほぼ平易な英語のコマンドである文字列と、必要に応じて参照タイムスタンプを受け取ります。これは、現在のタイムスタンプから最後のタイムスタンプまで実行するために使用するものです。
すなわち。strtotime('end of the working day', timestamp of when the job started);
[NB: 'end of the day' は受け入れ可能な文字列ではありません。それについては、下部にある PHP マニュアルへのリンクを確認してください。それがどのように役立つかを確認したかっただけです]
したがって、元のタイムスタンプから現在までのループを作成すると、作業時間数を数えることができます。
疑似コードでロジックを示します。
$Present is present timestamp;
$Start is the starting timestamp;
$Hours will be the accumulated working hours between starting timestamp and present timestamp;
loop while present timestamp not reached {
if $Start does not occur on the same day as $Present{
if $Start occurs inside of working hours {
find the time to the end of the working day;
add that time to $Hours;
}
find next day;
if the next day is Saturday{
update $Start to the working start of next Monday;
}
else{
update $Start to the working start of the next day;
}
}
else{
find the time between $Start and $Present;
add that time to $Hours;
update $Start to $Present or Break;
}
}
開始時刻が週末に発生せず、現在のタイムスタンプと同じ日の営業時間外 (つまり、前) に発生しないことを前提としていますが、それらの制御は非常に簡単です。
これであなたの友達になるものは次のとおりです。
@Amine Matmati のリンク:週末の時間を無視した 2 つの日付の時差
PHP date(): http://php.net/manual/en/function.date.php
PHP strtotime(): http://www.php.net/manual/en/function.strtotime.php
ハッピーコーディング!