How to compute the next minute of a time in Python?

Question:

So I have a datetime.datetime object and I want to compute the next minute of it. What I mean by next minute is the same time but at the very beginning of the next minute. For example, the next minute of 16:38:23.997 is 16:39:00.000.

I can do that easily by adding 1 to the minute and setting every smaller values to 0 (seconds, milliseconds, etc), but I’m not satisfied with this way, because I may need to carry out by checking if the minute becomes higher than 60, and if the hour is bigger than 24… and it ends up being over complicated for what I want to do

Is there a "simple" pythonic way to achieve this ?

Asked By: Mateo Vial

||

Answers:

Yes, there is a simple and Pythonic way to achieve this. You can use the datetime.replace method to change only the values you want, and leave the others unchanged. Here’s an example:

from datetime import datetime, timedelta

def next_minute(dt):
    return dt.replace(microsecond=0, second=0) + timedelta(minutes=1)

You can use this function to get the next minute of a datetime object by passing it to the function next_minute(dt). This function first sets the microsecond and second values to 0 using the replace method, and then adds a timedelta of 1 minute to get the next minute.

example:

from datetime import datetime, timedelta

def next_minute(dt):
    return dt.replace(microsecond=0, second=0) + timedelta(minutes=1)

current_time = datetime.now()
print("Current time:", current_time)

ext_minute_time = next_minute(current_time)
print("Next minute:", next_minute_time)

#Output
Current time: 2022-02-07 11:38:23.997
Next minute: 2022-02-07 11:39:00
Answered By: Hariharan
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.