Ничего встроенного в datetime
не сделает. Вам нужно будет использовать что-то вроде:
datetime.time(1).strftime('%I:%M%p').lstrip('0')
Добавление
Как указывает @naktinis, он предназначен для использования именно этого параметра strftime
. К сожалению, не существует общего решения, если содержимое параметра strftime
неизвестно или не указано (например, внешний параметр), поскольку оно становится проблемой «делай, что я имею в виду, а не то, что я говорю».
Таким образом, учитывая, что вы должны знать, что находится в вашем параметре strftime
, в более сложном случае вы можете решить это как части:
tval = datetime.time(1)
tval_str = (tval.strftime('%A, %B ') + tval.strftime('%d').lstrip('0')
+ tval.strftime(' %Y, ') + tval.strftime('%I:%M').lstrip('0')
+ tval.strftime('%p').lower())
или с модулем re
:
tval = datetime.time(1)
tval_str = re.sub(r"^0|(?<=\s)0", "",
re.sub(r"(?<=[0-9])[AP]M", lambda m: m.group().lower(),
tval.strftime('%A, %B %d %Y, %I:%M%p')))
Тем не менее, имейте в виду, что если термин "%p"
дает вам заглавные буквы, это может быть связано с тем, что пользователь настраивает свою локаль таким образом, и при изменении регистра вы переопределяете пользовательские настройки, что иногда приводит к отчеты. Кроме того, пользователь может захотеть что-то отличное , кроме «am» или «pm», например «a.m.» и "п.м." Также обратите внимание, что они отличаются для разных локалей (например, en_US
локаль дает AM
или PM
для %p
, но de_DE
дает am
или pm
), и вы можете не получать символы в вы принимаете кодировку.
Из документации о поведении strftime :
Поскольку формат зависит от текущей локали, следует соблюдать осторожность, делая предположения о выходном значении. Порядок полей будет различаться (например, «месяц / день / год» и «день / месяц / год»), и выходные данные могут содержать символы Юникода, закодированные с использованием кодировки по умолчанию для локали (например, если текущая локаль js_JP
кодировка по умолчанию может быть любой из eucJP
, SJIS
или utf-8
; используйте locale.getlocale()
для определения кодировки текущей локали).
Итак, короче говоря, если вы считаете, что вам нужно переопределить настройки локали, убедитесь, что у вас есть веская причина, чтобы не создавать новые ошибки.