Как изменить дату экземпляра времени с помощью python?

У меня есть переменная start_time, которая хранит строку времени.

start_time = '2022-12-21 22:00:00'

Теперь, используя python, я хочу изменить дату времени начала на

start_time = '2022-12-28 22:00:00'

Я сделал это с помощью очень уродливого подхода. Пожалуйста, подскажите мне простой и лучший способ сделать это.

Я пробовал со следующим кодом.

   #its not string its time instance
   replacing_date = 2022-12-28 00:00:00
   #converting time into string 
   replacing_date = datetime.strptime(replacing_date,'%Y-%m-%d %H:%M:%S')

   replacing_date =replacing_date.split(" ")
   start_time = start_time.split(" ")
   start_time = datetime.strptime(replacing_date[0]+start_time[1],'%Y-%m-%d %H:%M:%S')

В основном мне приходится менять дату во многих местах. Это не кажется хорошей вещью в этом случае. и это может сломаться, если формат временной строки изменится. Она также может сломаться, если изменится год или месяц. Например, дата изменится на.

start_time = '2023-01-01 22:00:00'
from datetime import datetime, timedelta
start_time = '2022-12-21 22:00:00'
replacing_date = datetime.strptime(start_time,'%Y-%m-%d %H:%M:%S')
new_time = replacing_date+timedelta(days=7)
print(new_time)

Выход:

2022-12-28 22:00:00

используйте timedelta для изменения времени.

Вы можете использовать datetime.replace(..):

from datetime import datetime

start_time = "2022-12-21 22:00:00"

new_time = datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S").replace(day=28)

print(new_time)

Выход:

2022-12-28 22:00:00

Or regexp:

import re

new_time = re.sub(r"\d{4}-\d{2}-\d{2}", "2022-12-28", "2022-12-21 22:00:00", 0)

print(new_time)

Выход:

2022-12-28 22:00:00

Вернуться на верх