2012-05-16 16 views

Respuesta

271

Puede usar strftime para ayudarlo a formatear su fecha.

por ejemplo,

import datetime 
t = datetime.datetime(2012, 2, 23, 0, 0) 
t.strftime('%m/%d/%Y') 

rendirá:

'02/23/2012' 

Más información sobre el formato ver here

+2

muy útil para '' DateTimeField' o DateField' en Django. Gracias – erajuan

+0

use 't = datetime.datetime.now()' para usar la fecha actual – gizzmole

+0

Por lo que puedo decir de los documentos, no hay manera de devolver una fecha acolchada que no sea cero, es decir, '2/23/2012'. –

10

usted podría utilizar el formato de cadenas métodos simples:

>>> dt = datetime.datetime(2012, 2, 23, 0, 0) 
>>> '{0.month}/{0.day}/{0.year}'.format(dt) 
'2/23/2012' 
>>> '%s/%s/%s' % (dt.month, dt.day, dt.year) 
'2/23/2012' 
+1

similarmente, puede hacer algo como ''{:% Y-% m-% d% H:% M}'. Format (datetime (2001, 2, 3, 4, 5))'.Ver más en pyformat.info – mway

81

date y datetime objetos (y time también) apoyan una mini-language to specify output, y hay dos maneras de acceder a ella:

  • llamada a método directo: dt.strftime('format here'); y
  • nuevo método formato: '{:format here}'.format(dt)

Así que su ejemplo podría ser:

dt.strftime('%m/%d/%Y') 

o

'{:%m/%d/%Y}'.format(dt) 

Para completarlo: También puede acceder directamente los atributos de el objeto, pero solo obtiene los números:

'%s/%s/%s' % (dt.month, dt.day, dt.year) 

El tiempo necesario para aprender el mini-lenguaje lo vale.


Como referencia, aquí están los códigos utilizados en el mini-lenguaje:

  • %a día de la semana como el nombre abreviado de la configuración regional.
  • %A Weekday as locale's full name.
  • %w Día de la semana como número decimal, donde 0 es domingo y 6 es sábado.
  • %d El día del mes como número decimal sin relleno.
  • %b Mes como nombre abreviado de la configuración regional.
  • %B Month as locale's name.
  • %m Mes como número decimal sin acolchado. 01, ..., 12
  • %y Año sin siglo como número decimal sin acolchado. 00, ..., 99
  • %Y Año con el siglo como número decimal. 1970, 1988, 2001, 2013
  • %H Hora (reloj de 24 horas) como número decimal sin relleno. 00, ..., 23
  • %I Hora (reloj de 12 horas) como número decimal sin acolchado. 01, ..., 12
  • %p El equivalente de la configuración regional de AM o PM.
  • %M Minuto como número decimal sin acolchado. 00, ..., 59
  • %S Segundo como número decimal sin acolchado. 00, ..., 59
  • %f Microsegundos como número decimal, cero acolchado a la izquierda. 000000, ..., 999999
  • %z UTC desplazamiento en forma HHMM + o -HHMM (vacío si ingenua), 0000, -0400, 1030
  • %Z Tiempo nombre de zona (vacío si ingenua), UTC, EST, CST
  • %j Día del año como número decimal sin acolchado. 001, ..., 366
  • %U Número de la semana del año (el domingo es el primero) como número decimal acolchado cero.
  • %W Número de la semana del año (el lunes es el primero) como número decimal.
  • %c Representación de fecha y hora apropiada de Locale.
  • %x Representación de la fecha adecuada de la configuración regional.
  • %X Representación de tiempo apropiada de la configuración regional.
  • %% Un carácter literal '%'.
+1

bounty va aquí por un buen resumen – tinySandy

1

La concatenación de cadenas, str.join, se puede utilizar para construir la cadena.

d = datetime.now() 
'/'.join(str(x) for x in (d.month, d.day, d.year)) 
'3/7/2016' 
14

Otra opción:

import datetime 
now=datetime.datetime.now() 
now.isoformat() 
# ouptut --> '2016-03-09T08:18:20.860968' 
0

Puede convertir fecha y hora a la cadena. published_at="{}".format(self.published_at)

-2

Es posible convertir un objeto datetime en una cadena trabajando directamente con los componentes del objeto datetime.

from datetime import date 

myDate = date.today()  
#print(myDate) would output 2017-05-23 because that is today 
#reassign the myDate variable to myDate = myDate.month 
#then you could print(myDate.month) and you would get 5 as an integer 
dateStr = str(myDate.month)+ "/" + str(myDate.day) + "/" + str(myDate.year)  
# myDate.month is equal to 5 as an integer, i use str() to change it to a 
# string I add(+)the "/" so now I have "5/" then myDate.day is 23 as 
# an integer i change it to a string with str() and it is added to the "5/" 
# to get "5/23" and then I add another "/" now we have "5/23/" next is the 
# year which is 2017 as an integer, I use the function str() to change it to 
# a string and add it to the rest of the string. Now we have "5/23/2017" as 
# a string. The final line prints the string. 

print(dateStr) 

de salida -> 5/23/2017

+0

Utilice el enlace [editar] para explicar cómo funciona este código y no solo proporcione el código, ya que una explicación es más probable que ayude a los lectores futuros. Ver también [respuesta]. [fuente] (http://stackoverflow.com/users/5244995) –

Cuestiones relacionadas