Cuando se usa Python strftime
, ¿hay alguna forma de eliminar el primer 0 de la fecha si es anterior al 10, es decir? asi 01
es 1
? ¿No puedes encontrar una %
cosita para eso?
¡Gracias!
En realidad, tuve el mismo problema y me di cuenta de que, si agrega un guión entre %
la letra y la letra, puede eliminar el cero inicial.
Por ejemplo %Y/%-m/%-d
.
Esto solo funciona en Unix (Linux, OS X), no en Windows (incluido Cygwin). En Windows, usaría #
, por ejemplo %Y/%#m/%#d
.
ValueError: '-' is a bad directive in format '%b %-d, %Y'
. OSX, Python 2.7.%#d
haría lo mismo en WindowsPodemos hacer este tipo de cosas con el advenimiento del
format
método desde python2.6:Aunque quizás esté más allá del alcance de la pregunta original, para formatos más interesantes, puede hacer cosas como:
Y a partir de python3.6, esto se puede expresar como una cadena formateada en línea :
fuente
time.strftime('%A %B %d, %Y')
, lo que produce (ahora, en inglés)Tuesday October 07, 2014
.__format__
gancho muy interesante que te permite escribir cosas así.'{dt.hour}'
usa un reloj de 24 horas :(. El uso de la segunda opción todavía lo lleva de nuevo a usar'{%#I}'
en Windows y'{%-I}'
en Unix.Algunas plataformas pueden admitir especificaciones de ancho y precisión entre
%
y la letra (como 'd' para el día del mes), de acuerdo con http://docs.python.org/library/time.html , pero definitivamente no es portátil solución (por ejemplo, no funciona en mi Mac ;-). ¿Tal vez pueda usar un reemplazo de cadena (o RE, para un formato realmente desagradable) después de lastrftime
solución? p.ej:fuente
Aquí está la documentación de los modificadores compatibles con
strftime()
la biblioteca GNU C. (Como la gente dijo antes, puede que no sea portátil). De interés para usted podría ser:%e
en lugar de%d
reemplazará el cero inicial en el día del mes con un espacioFunciona en mi Python (en Linux). No sé si funcionará en el tuyo.
fuente
%-d
anterior , esto funciona en OS X 10.8.5 con Python 2.7.2, pero no en Windows 7 Pro de 64 bits con Python 2.7.3.fuente
.replace('X0','X').replace('X','')
? Solo hazlo.replace('X0', '')
y será bueno.En Windows, agregue un '#', como en '% # m /% # d /% Y% # I:% M:% S% p'
Para referencia: https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
fuente
bastante tarde para la fiesta pero
%-d
funciona de mi parte.datetime.now().strftime('%B %-d, %Y')
produce algo así como "5 de noviembre de 2014"salud :)
fuente
ValueError: Invalid format string
en mi sistema de WindowsEncuentro que el filtro de formato de fecha de plantilla de Django es rápido y fácil. Elimina los ceros a la izquierda. Si no te importa importar el módulo Django, échale un vistazo.
http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date
fuente
import django.conf
django.conf.settings.configure()
Echa un vistazo a
-
continuación:fuente
simplemente use
replace
así:(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
saldrá:
fuente
Para
%d
que pueda convertir a entero usandoint()
, eliminará automáticamente el 0 inicial y se convertirá en entero. Luego puede volver a convertir a cadena usandostr()
.fuente
utilizando, por ejemplo, "% -d" no es portátil, incluso entre diferentes versiones del mismo sistema operativo. Una mejor solución sería extraer los componentes de fecha individualmente y elegir entre operadores de formato específicos de fecha y acceso a atributos de fecha para cada componente.
fuente
Debido a que Python realmente solo llama a la
strftime(3)
función del lenguaje C en su plataforma, puede ser que haya caracteres de formato que podría usar para controlar el cero inicial; tratarman strftime
echar un vistazo. Pero, por supuesto, el resultado no será portátil, como le recordará el manual de Python. :-)Intentaría usar un
datetime
objeto de estilo nuevo en su lugar, que tiene atributos comot.year
yt.month
yt.day
, y los sometería al formato normal y de alta potencia del%
operador, que admite el control de los ceros a la izquierda. Consulte http://docs.python.org/library/datetime.html para más detalles. Mejor aún, use el"".format()
operador si su Python lo tiene y sea aún más moderno; También tiene muchas opciones de formato para números. Ver: http://docs.python.org/library/string.html#string-formatting .fuente
Basado en el método de Alex, esto funcionará tanto para los casos de inicio de cadena como después de espacios:
Me gusta más que .format o% -d porque es multiplataforma y me permite seguir usando strftime (para obtener cosas como "noviembre" y "lunes").
fuente
Pregunta anterior, pero% l (L minúscula) funcionó para mí en el tiempo de ejecución: sin embargo, esto puede no funcionar para todos, ya que no aparece en la documentación de Python que encontré
fuente
fuente
ValueError: '_' is a bad directive in format '%a %b %_d %H:%M:%S %Y'
usando Python 3.5