time between now and the next 2:30 am?

Christian Heimes lists at cheimes.de
Fri Jul 23 19:24:33 EDT 2010


> Your case could be handled by something like:
> 
>     from datetime import datetime
>     from dateutil.relativedelta import relativedelta
> 
>     target = datetime.now() + relativedelta(days=+1, hour=2, minute=30,
>                                             second=0, microsecond=0)
>     remaining = target - datetime.now()

You don't need the dateutil package for the trick:

>>> dt = datetime(2010, 1, 1, 1, 0)
>>> str(dt)
'2010-01-01 01:00:00'
>>> next = dt.replace(hour=2, minute=30)
>>> next - dt
datetime.timedelta(0, 5400)
>>> (next - dt).seconds
5400

>>> dt = datetime(2010, 1, 1, 3, 0)
>>> next = dt.replace(hour=2, minute=30)
>>> next - dt
datetime.timedelta(-1, 84600)
>>> (next - dt).seconds
84600




More information about the Python-list mailing list