Cuando se usa Python strftime, ¿hay alguna forma de eliminar el primer 0 de la fecha si es anterior al 10, es decir? asi 01es 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.%#dharía lo mismo en WindowsPodemos hacer este tipo de cosas con el advenimiento del
formatmé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 lastrftimesolució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:%een lugar de%dreemplazará 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
%-danterior , 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
%-dfunciona de mi parte.datetime.now().strftime('%B %-d, %Y')produce algo así como "5 de noviembre de 2014"salud :)
fuente
ValueError: Invalid format stringen 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.confdjango.conf.settings.configure()Echa un vistazo a
-continuación:fuente
simplemente use
replaceasí:(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")saldrá:
fuente
Para
%dque 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 strftimeechar un vistazo. Pero, por supuesto, el resultado no será portátil, como le recordará el manual de Python. :-)Intentaría usar un
datetimeobjeto de estilo nuevo en su lugar, que tiene atributos comot.yearyt.monthyt.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