Ao usar o Python strftime
, existe uma maneira de remover o primeiro 0 da data, antes do dia 10, ou seja. tão01
é 1
? Não consegue encontrar uma %
coisa para isso?
Obrigado!
Na verdade, tive o mesmo problema e percebi que, se você adicionar um hífen entre %
a letra e a letra, poderá remover o zero à esquerda.
Por exemplo %Y/%-m/%-d
.
Isso funciona apenas no Unix (Linux, OS X), não no Windows (incluindo Cygwin). No Windows, você usaria #
, por exemplo %Y/%#m/%#d
.
ValueError: '-' is a bad directive in format '%b %-d, %Y'
. OSX, Python 2.7.%#d
faria o mesmo no WindowsPodemos fazer esse tipo de coisa com o advento do
format
método desde python2.6:Embora talvez esteja além do escopo da pergunta original, para formatos mais interessantes, você pode fazer coisas como:
E a partir do python3.6, isso pode ser expresso como uma string formatada em linha :
fonte
time.strftime('%A %B %d, %Y')
, que produz (agora, no idioma inglês)Tuesday October 07, 2014
.__format__
gancho muito interessante que permite escrever coisas assim.'{dt.hour}'
usa um relógio de 24 horas :( Usando a segunda opção ainda traz para você voltar a usar.'{%#I}'
No Windows e'{%-I}'
no Unix.Algumas plataformas podem suportar especificação de largura e precisão entre
%
e a letra (como 'd' para o dia do mês), de acordo com http://docs.python.org/library/time.html - mas é definitivamente um dispositivo não portátil solução (por exemplo, não funciona no meu Mac ;-). Talvez você possa usar uma sequência de substituição (ou RE, para um formato realmente desagradável) após astrftime
correção. por exemplo:fonte
Aqui está a documentação dos modificadores suportados pelo
strftime()
biblioteca GNU C. (Como as pessoas disseram antes, pode não ser portátil.) De seu interesse, você pode ser:%e
ao invés de%d
substituirá o zero inicial no dia do mês por um espaçoFunciona no meu Python (no Linux). Não sei se funcionará no seu.
fonte
%-d
acima , isso funciona no OS X 10.8.5 com Python 2.7.2, mas não no Windows 7 Pro de 64 bits com Python 2.7.3.fonte
.replace('X0','X').replace('X','')
? Apenas faça.replace('X0', '')
e será bom.No Windows, adicione um '#', como em '% # m /% # d /% Y% # I:% M:% S% p'
Para referência: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
fonte
muito tarde para a festa, mas
%-d
funciona do meu lado.datetime.now().strftime('%B %-d, %Y')
produz algo como "5 de novembro de 2014"Felicidades :)
fonte
ValueError: Invalid format string
no meu sistema Windows.Acho que o filtro de formatação de data do modelo do Django é rápido e fácil. Ele remove zeros à esquerda. Se você não se importa de importar o módulo Django, confira.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
fonte
import django.conf
django.conf.settings.configure()
Veja
-
abaixo:fonte
basta usar
replace
assim:(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
ele produzirá:
fonte
Para
%d
você converter para inteiro usandoint()
, ele removerá automaticamente o 0 inicial e se tornará inteiro. Em seguida, você pode converter novamente em string usandostr()
.fonte
usando, por exemplo, "% -d" não é portátil, mesmo entre versões diferentes do mesmo sistema operacional. Uma solução melhor seria extrair os componentes da data individualmente e escolher entre operadores de formatação específicos para a data e acesso ao atributo de data para cada componente.
fonte
Como o Python realmente chama a
strftime(3)
função de linguagem C em sua plataforma, pode ser que haja caracteres de formato que você possa usar para controlar o zero inicial; experimentarman strftime
dar uma olhada. Mas, é claro, o resultado não será portátil, como o manual do Python o lembrará. :-)Em
datetime
vez disso, tentaria usar um objeto de novo estilo , que possui atributos comot.year
et.month
et.day
, e colocá-los na formatação normal de alta potência do%
operador, que suporta o controle dos zeros à esquerda. Veja http://docs.python.org/library/datetime.html para obter detalhes. Melhor ainda, use o"".format()
operador se o seu Python o possuir e seja ainda mais moderno; também possui muitas opções de formato para números. Veja: http://docs.python.org/library/string.html#string-formatting .fonte
Com base no método de Alex, isso funcionará para os casos de início de sequência e pós-espaços:
Gosto disso melhor do que .format ou% -d, porque é multiplataforma e me permite continuar usando o strftime (para obter coisas como "novembro" e "segunda-feira").
fonte
Pergunta antiga, mas% l (letra minúscula L) funcionou para mim no strftime: embora isso não funcione para todos, pois não está listado na documentação do Python que encontrei
fonte
fonte
ValueError: '_' is a bad directive in format '%a %b %_d %H:%M:%S %Y'
usando python 3.5