Spaces:
Running
Running
| from datetime import datetime, date, time, timedelta | |
| def calculate_sleep_duration(yesterday_date: date, yesterday_sleep: time, today_date: date, today_wake: time) -> float: | |
| sleep_dt = datetime.combine(yesterday_date, yesterday_sleep) | |
| # If the user went to sleep past midnight (e.g., 01:00 AM), | |
| # it actually belongs to 'today_date' chronologically. | |
| if yesterday_sleep < time(12, 0): # Assuming any sleep time before noon is past midnight | |
| sleep_dt += timedelta(days=1) | |
| wake_dt = datetime.combine(today_date, today_wake) | |
| duration_td = wake_dt - sleep_dt | |
| # Fallback in case of weird overlapping data | |
| if duration_td.total_seconds() < 0: | |
| return 0.0 | |
| return round(duration_td.total_seconds() / 3600.0, 2) |