Как отформатировать строковый объект времени с помощью python?

Я использую django python. Теперь я хочу преобразовать следующую временную строку в формат часов, минут, am/pm.

string_time = '2022-09-13 11:00:00.996795+00'

ожидаемый результат:

11:00 am

фактический выход :

ValueError: time data '2022-09-13 11:00:00.996795+00' does not match format '%m/%d/%y %H:%M:%S'

мой код :

 def time_slots(self,string_time='2022-09-13 11:00:00.996795+00'):
        print(datetime.strptime(string_time, '%m/%d/%y %H:%M:%S'),type(start_time))
        start_time = datetime.strptime(string_time, '%m/%d/%y %H:%M:%S')
        return formated_start_time

Вы можете использовать функцию разбора, предоставляемую dateutil:

string_time = '2022-09-13 11:00:00.996795+00'
dt = parse(string_time)
return dt.strftime("%H:%M %p")

Результат: 11:00 AM

Когда вы удалите последние три символа ('+00') и замените пробел на T, вы можете использовать datetime.datetime.fromisoformat(str) для получения объекта datetime.

from datetime import datetime
timestr = '2022-09-13 11:00:00.996795+00'
timestr = timestr.rstrip(timestr[-3:]).replace(' ', 'T')
date = datetime.fromisoformat(timestr)

отсюда вы можете использовать date.hour и date.minute для получения нужных вам значений. например:

hour = date.hour%12
minute = date.minute
addition = ''
if date.hour > 12:
    addition = 'pm'
else:
    addition = 'am'
print(f'{hour}:{minute} {addition}')

Я не уверен, полезна ли последняя строка +00. Если нет, то следующая реализация может вам помочь.

from datetime import datetime

def time_slots(string_time='2022-09-13 11:00:00.996795+00'):
  date = datetime.strptime(string_time[:-3], '%Y-%m-%d %H:%M:%S.%f')
  return date.strftime("%H:%M %p")
output = time_slots()
print(output) # the output is: 11:00 AM
Вернуться на верх