Есть ли формат для печати даты и времени Python, который не будет использовать нулевое заполнение даты и времени?
Формат, который я сейчас использую:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
Результат: 29.02.2012 17:03
Желаемый: 29.02.2012 17:03
В каком формате месяц будет отображаться как «2» вместо «02», а время - как «17:03 PM» вместо «05:03 PM»
.lstrip("0")
избавиться от ведущего нуля.Другая альтернатива, позволяющая избежать аспекта «все или ничего» в начале нулевого значения выше, - это поставить минус перед типом поля:
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
Тогда это: '10.04.2015 03:00 AM'
Становится: '10.04.2015 3:00 AM'
При желании вы можете поставить минус перед днем.
Изменить: минус-функция происходит от библиотеки GNU C («glibc»), как указано на странице руководства Linux strftime в разделе «Примечания к Glibc».
источник
date.__format__
ortime.strftime
, docs.python.org/3/library/… и docs.python.org/3.8/library/time.html#time.strftime соответственноНовая система форматирования строк представляет собой альтернативу
strftime
. Это вполне читаемо - действительно, может быть предпочтительнееstrftime
по этой причине. Не говоря уже о том, что здесь нет нуля:>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now()) '3/1/2012'
Поскольку вам, вероятно, нужно нулевое заполнение в поле минут, вы можете сделать это:
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now) '3/1/2012 20:00'
Если вам нужно «обычное» время вместо «военного», вы все равно можете использовать стандартные
strftime
спецификаторы. Удобно, для наших целей,strftime
делает предоставить код для времени проложенных 12 часов с пустым вместо ведущего нуля:'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now) '4/4/2014 6:00PM'
Увы, это становится несколько менее читабельным. И, как указывает @mlissner,
strftime
на некоторых (всех?) Платформах произойдет сбой до 1900 года.источник
"{0.day} {0:%B %Y}".format(d)
что даст вам'2 August 2013'
день этого комментария :)Принятый ответ не является правильным решением (ИМХО) Надлежащие документированные методы:
В Linux "#" заменяется на "-":
% -d,% -H,% -I,% -j,% -m,% -M,% -S,% -U,% -w,% -W,% -y,% -Y
В Windows "-" заменяется на "#":
% # d,% # H,% # I,% # j,% # m,% # M,% # S,% # U,% # w,% # W,% # y,% # Y
#Linux mydatetime.strftime('%-m/%d/%Y %-I:%M%p') # Windows mydatetime.strftime('%#m/%d/%Y %#I:%M%p')
Источник: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
Как заявил Sagneta: Хеш-трюк # в Windows доступен только для собственного исполняемого файла python. это не будет работать для реализаций python на основе cygwin.
источник
Хороший ответ от Криса Фримена о Linux.
В окнах это:
mydate.strftime('%#m/%#d/%Y')
Думал, что это может помочь.
источник
«% l» (это строчная L) работает в течение часа (вместо «% I»). Я знаю это только из другого ответа здесь
Python strftime - дата без начального 0?
но, к сожалению, у них нет кода для других элементов даты / времени.
источник