seatable-api-python
seatable-api-python copied to clipboard
dateutils.hours() gives wrong answer
Following the official tutorial Python API and running dateutils.hours("2019-6-3 20:1:12", "2020-5-3 13:13:13") will give an answer of 8009, different from 8034 given by the tutorial.
I think this part leads to the problem:
def datediff(self, start, end, unit='S'):
...
elif unit == 'H':
delta_days = (dt_end - dt_start).days
if delta_days == 0:
return dt_end.hour - dt_start.hour
return delta_days * 24 + (dt_end.hour - dt_start.hour)
...
delta_days == 0 means less than 24 hours. To check if they are the same day, something like start.day == end.day should be used instead. Similar mistake occurs when delta_days not equals to 0.
Since dateutils is implimented using datetime, this part can be improved:
td = dt_end - dt_start
delta = td.days * 24 + td.seconds / 3600
OK, I think the datediff() (not only the hours()) function needs more check. Using more timedelta.days and timedelta.seconds could help making the code more clear to avoid bugs.