I have a table representing a schedule, i.e. it contains day (monday-sunday), start_time and end_time fields
df = pl.DataFrame({
"day": ["monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"],
"enabled": [True, True, True, True, True, False, False],
"start_time": ["09:00", "09:00", "09:00", "09:00", "09:00", "00:00", "00:00"],
"end_time": ["18:00", "18:00", "18:00", "18:00", "18:00", "00:00", "00:00"],
})
df = df.with_columns(start_time = pl.col("start_time").str.to_time("%H:%M"))
df = df.with_columns(end_time = pl.col("end_time").str.to_time("%H:%M"))
print(df)
shape: (7, 4)
┌───────────┬─────────┬────────────┬──────────┐
│ day ┆ enabled ┆ start_time ┆ end_time │
│ --- ┆ --- ┆ --- ┆ --- │
│ str ┆ bool ┆ time ┆ time │
╞═══════════╪═════════╪════════════╪══════════╡
│ monday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ tuesday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ wednesday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ thursday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ friday ┆ true ┆ 09:00:00 ┆ 18:00:00 │
│ saturday ┆ false ┆ 00:00:00 ┆ 00:00:00 │
│ sunday ┆ false ┆ 00:00:00 ┆ 00:00:00 │
└───────────┴─────────┴────────────┴──────────┘
I need to subtract n hours from the start_time and add n hours to the end_time. I cannot find a polars operation to add/subtract hours from a pl.time - I've tried adding a pl.duration but that only appears to work for date and datetime.
One work-around I've assumed is to turn start_time / end_time into a pl.datetime (i.e. use some constant date), do the operation and then decompose the result back to a time. This has one option of being easier to ensure I don't over/underflow (i.e. subtract 2 hours from 01:00 and end up with 23:00) but I'm wondering it's possible to add/subtracts hours/minutes to a time in polars?