前提
可能ならpandas使わない。
pandas使わないと実現できないのであれば使用可。
ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
実現したいこと
作業時間、作業停止時間、休憩時間の3種類のデータがあります。
作業時間は開始日時と終了日時がセットで1回。
作業停止時間は開始日時と終了日時がセットで複数回。
休憩時間は開始時刻と終了時刻がセットで複数回。ただし、時分がint型で区別されている。時は23時を超えても0に戻さない(24, 25, ・・・)。
これらのデータから実作業時間を求めたいです。
実作業時間は作業時間から作業停止時間と休憩時間を除いた時間です。
一旦、データを3種類用意まではできていますが、計算まで至っていません。
とりあえず何か試したいとは思っているのですが、
3つとも重なる時間があるときにどのように計算すればいいか分かりません。
ご教授のほど、宜しくお願いします。
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
3種類のデータを用意するところまではできているが、時間の計算は未実装。
Python
1from datetime import datetime, timedelta 2 3# hourに24以上を渡したら調整する関数。マスタデータをdatetimeに変換する用 4def org_datetime(year, month, day, hour, minute): 5 if hour > 23: 6 fix_hour = hour % 24 7 add_day = int(hour / 24) 8 return datetime(year, month, day, fix_hour, minute) + timedelta(days=add_day) 9 10 return datetime(year, month, day, hour, minute) 11 12 13# 作業開始終了日時 14workstart = datetime(2022, 11, 10, 10, 0) 15workend= datetime(2022, 11, 10, 16, 0) 16 17# 作業停止日時 18stop = [ 19 {"start": datetime(2022, 11, 10, 8, 0), "end": datetime(2022, 11, 10, 10, 30)}, 20 {"start": datetime(2022, 11, 10, 14, 30), "end": datetime(2022, 11, 10, 15,30)} 21] 22 23# 休憩時刻 24rest = [ 25 {"starthour": 10, "startmin": 0, "endhour": 10, "endmin": 10}, 26 {"starthour": 12, "startmin": 0, "endhour": 12, "endmin": 45}, 27 {"starthour": 15, "startmin": 0, "endhour": 15, "endmin": 10}, 28] 29 30# 休憩時間 31rest_datetime = [] 32for i in rest: 33 rest_datetime.append( 34 {"start": org_datetime(2022, 11, 10, i["starthour"], i["startmin"]), "end": org_datetime(2022, 11, 10, i["endhour"], i["endmin"])}, 35 )
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/11/11 02:35
2022/11/14 01:47 編集
退会済みユーザー
2022/11/14 03:40
2022/11/14 05:08