DEV Community

Vlad Nedelcu
Vlad Nedelcu

Posted on

Calculating the number of seconds until midnight

I know this might be very straight forward for some developers but I found this a pretty intriguing and fun quick problem to solve, it also might help some beginners furthermore.

How can you find the number of seconds until midnight ?....with python...in an elegant way.

My first approach to this was to subtract from the 24 hours the number of hours that passed today, and so multiply with 60 to get the number of seconds.

from datetime import datetime

number_of_seconds_until_midnight = (24 - datetime.now().hour) * 60 * 60
Enter fullscreen mode Exit fullscreen mode

The pros of this formula is that is fast, but it lack the readability of python coding. By using datetime package from python you can increase the readability and the code follows as this:

from datetime import datetime, timedelta, time

now = datetime.now()
midnight = datetime.combine(now + timedelta(days=1), time())
seconds_until_midnight = (midnight - now).seconds
Enter fullscreen mode Exit fullscreen mode

midnight is calculated by combining tomorrow date with time, which will strip the time to 00:00.
seconds_until_midnight subtract from midnight datetime the now datetime to get the time-frame between these two.

You can also add all this to a method:

from datetime import datetime, timedelta, time

def seconds_until_midnight() -> int:
   '''Calculate seconds until midnight'''
   now = datetime.now()
   midnight = datetime.combine(now + timedelta(days=1), time())

   return (midnight - now).seconds

Enter fullscreen mode Exit fullscreen mode

Top comments (0)