2023年7月26日水曜日

メンバの作業時間を顧客に報告する謎 excel の作成を楽にするために久しぶりに python を書いた。こんな感じの計算をしたい:

  • 12:00-13:00は問答無用で休憩扱い
  • 9:00始業、18:00終業なら稼働時間は8時間
  • 9:00始業、12:30終業なら稼働時間は3時間
  • 13:00始業、21:00終業なら稼働時間は8時間

これまでは見ただけで心が疲れる excel の if を使っていたが、python なら楽に書けた。

import datetime as dt
import sympy as sp

# 休憩時間 12:00-13:00
restTime = sp.Interval(12*60, 13*60)

# 始業から終業までの時間から休憩時間を差し引き
def getWorkTime(totalTime):
    workTime = (totalTime - restTime).measure
    return dt.time(int(workTime/60), int(workTime%60))
    
# 9:00-12:30の場合
start = dt.time(9, 0)
end = dt.time(12, 30)
totalTime = sp.Interval(start.hour * 60 + start.minute, end.hour * 60 + end.minute)
getWorkTime(totalTime)
# datetime.time(3, 0)が返る

0 件のコメント:

コメントを投稿