validar sistema semana obtener hora fechas fecha capturar biblioteca actual python padding strftime

semana - obtener hora sistema python



Python strftime-¿fecha sin liderar 0? (17)

Algunas plataformas pueden admitir la especificación 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 es un no solución portátil (por ejemplo, no funciona en mi Mac ;-). ¿Tal vez puede usar una cadena de reemplazo (o RE, para un formato realmente desagradable) después del tiempo de strftime para remediar eso? p.ej:

>>> y (2009, 5, 7, 17, 17, 17, 3, 127, 1) >>> time.strftime(''%Y %m %d'', y) ''2009 05 07'' >>> time.strftime(''%Y %m %d'', y).replace('' 0'', '' '') ''2009 5 7''

Cuando se utiliza el tiempo de actividad de Python, ¿hay una manera de eliminar el primer 0 de la fecha si es anterior al 10, es decir? entonces 01 es 1 ? ¿No puedes encontrar un % thingy para eso?

¡Gracias!


Basado en el método de Alex, esto funcionará tanto para los casos de inicio de cadena como de espacios posteriores al espacio:

re.sub(''^0|(?<= )0'', '''', "01 January 2000 08:00am")

Me gusta esto mejor que .format o% -d porque es multiplataforma y me permite seguir usando strftime (para obtener cosas como "Noviembre" y "Lunes").


Bastante tarde para la fiesta, pero %-d funciona en mi final.

datetime.now().strftime(''%B %-d, %Y'') produce algo así como "5 de noviembre de 2014"

saludos :)


Creo que el filtro de formato de fecha de la plantilla de Django es rápido y fácil. Se quita los ceros iniciales. Si no te importa importar el módulo Django, échale un vistazo.

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

from django.template.defaultfilters import date as django_date_filter print django_date_filter(mydate, ''P, D M j, Y'')


Debido a que Python simplemente llama a la función strftime(3) lenguaje C en su plataforma, puede ser que haya caracteres de formato que podría usar para controlar el cero inicial; Intente man strftime y eche un vistazo. Pero, por supuesto, el resultado no será portátil, como le recordará el manual de Python. :-)

Intentaría usar un objeto datetime nuevo estilo, que tiene atributos como t.year y t.month y t.day , y los t.day formato normal y de alta potencia del operador % , que admite el control de los principales ceros Consulte http://docs.python.org/library/datetime.html para obtener más información. Mejor aún, use el operador "".format() si su Python lo tiene y sea aún más moderno; Tiene muchas opciones de formato para los números también. Consulte: http://docs.python.org/library/string.html#string-formatting .


Echa un vistazo a - abajo

>>> from datetime import datetime >>> datetime.now().strftime(''%d-%b-%Y'') >>> ''08-Oct-2011'' >>> datetime.now().strftime(''%-d-%b-%Y'') >>> ''8-Oct-2011'' >>> today = datetime.date.today() >>> today.strftime(''%d-%b-%Y'') >>> print(today)


El uso de, 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 de atributo de fecha para cada componente.

e = datetime.date(2014, 1, 6) "{date:%A} {date.day} {date:%B}{date.year}".format(date=e)



En realidad tuve el mismo problema y me di cuenta de que, si agrega un guión entre el % 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 .


Para %d puede convertir a entero usando int() entonces eliminará automáticamente el 0 inicial y se convertirá en entero. A continuación, puede convertir de nuevo a cadena utilizando str() .


Podemos hacer este tipo de cosas con la llegada del método de format desde python2.6:

>>> import datetime >>> ''{dt.year}/{dt.month}/{dt.day}''.format(dt = datetime.datetime.now()) ''2013/4/19''

Aunque quizás más allá del alcance de la pregunta original, para formatos más interesantes, puedes hacer cosas como:

>>> ''{dt:%A} {dt:%B} {dt.day}, {dt.year}''.format(dt=datetime.datetime.now()) ''Wednesday December 3, 2014''

Y a partir de python3.6, esto se puede expresar como una cadena formateada en línea :

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import datetime >>> dt = datetime.datetime.now() >>> f''{dt:%A} {dt:%B} {dt.day}, {dt.year}'' ''Monday August 29, 2016''


Pregunta antigua, pero% l (L minúscula) funcionó para mí en tiempo de respuesta: puede que esto no funcione para todos, ya que no está incluido en la documentación de Python que encontré


simplemente use replace así:

(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")

saldrá:

''2017/7/21''


Here está la documentación de los modificadores soportados por strftime() en la biblioteca GNU C. (Como la gente dijo antes, podría no ser portátil). De interés para usted podría ser:

  • %e lugar de %d reemplazará el cero inicial en el día del mes con un espacio

Funciona en mi Python (en Linux). No sé si funcionará en el tuyo.


%d admite ambos (cero inicial y sin él) en Python 3.6.5 (y con suerte en las versiones posteriores)


import datetime now = datetime.datetime.now() print now.strftime("%b %_d")


>>> import datetime >>> d = datetime.datetime.now() >>> d.strftime(''X%d/X%m/%Y'').replace(''X0'',''X'').replace(''X'','''') ''5/5/2011''