Existe um formato para imprimir datetimes Python que não usará preenchimento de zero em datas e horas?
Formato que estou usando agora:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
Resultado: 2012/02/29 05:03
desejado: 2012/02/29 05:03
Qual formato representaria o mês como '2' em vez de '02' e a hora como '17h03' em vez de '05h15'
python
datetime
formatting
zero-pad
Yarin
fonte
fonte
.lstrip("0")
para se livrar do zero à esquerda.A outra alternativa para evitar o aspecto de zero à esquerda "tudo ou nada" acima é colocar um sinal de menos na frente do tipo de campo:
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
Então este: '4/10/2015 03:00 AM'
Torna-se: '10/04/2015 3:00 AM'
Você pode opcionalmente colocar um sinal de menos na frente do dia, se desejar.
Editar: O recurso menos deriva da biblioteca GNU C (“glibc”), conforme mencionado na página de manual do Linux strftime em “Notas Glibc”
fonte
date.__format__
outime.strftime
, docs.python.org/3/library/… e docs.python.org/3.8/library/time.html#time.strftime respectivamenteO novo sistema de formatação de strings oferece uma alternativa para
strftime
. É bastante legível - na verdade, pode ser preferívelstrftime
por conta disso. Sem mencionar o fato de que não zera:>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now()) '3/1/2012'
Como você provavelmente deseja preenchimento zero no campo minuto, pode fazer o seguinte:
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now) '3/1/2012 20:00'
Se você quiser o tempo "regular" em vez do tempo "militar", também poderá usar os
strftime
especificadores padrão . Convenientemente, para os nossos propósitos,strftime
não fornecer um código para o acolchoado de 12 horas com um espaço em branco em vez de um zero à esquerda:'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now) '4/4/2014 6:00PM'
Isso se torna um pouco menos legível, infelizmente. E, como @mlissner aponta,
strftime
falhará em algumas (todas?) Plataformas para datas anteriores a 1900.fonte
"{0.day} {0:%B %Y}".format(d)
que daria a você'2 August 2013'
o dia deste comentário :)A resposta aceita não é uma solução adequada (IMHO) Os métodos documentados adequados:
No Linux, "#" é substituído por "-":
% -d,% -H,% -I,% -j,% -m,% -M,% -S,% -U,% -w,% -W,% -y,% -Y
No Windows, "-" é substituído por "#":
% # 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')
Fonte: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
Conforme afirmado por Sagneta: O truque # hash no Windows está disponível apenas para executáveis python nativos. isso não funcionará para implementações de python baseadas em cygwin.
fonte
Boa resposta de Chris Freeman no Linux.
No Windows, é:
mydate.strftime('%#m/%#d/%Y')
Achei que isso pudesse ajudar.
fonte
"% l" (que é um L minúsculo) funciona para a hora (em vez de "% I"). Eu só sei disso por outra resposta aqui
Python strftime - data sem início de 0?
mas, infelizmente, eles não têm o código para os outros elementos de uma data / hora.
fonte