formato - Convertir el objeto datetime en una cadena de fecha solo en Python
formato fecha python (8)
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)
Salida -> 5/23/2017
Veo mucho al convertir una cadena de datetime y datetime en un objeto de datetime y datetime en Python, pero quiero ir a la inversa.
Tengo datetime.datetime(2012, 2, 23, 0, 0) y me gustaría convertirlo en una cadena como ''2/23/2012'' .
La concatenación de cadenas, str.join , se puede usar para construir la cadena.
d = datetime.now()
''/''.join(str(x) for x in (d.month, d.day, d.year))
''3/7/2016''
Otra opción:
import datetime
now=datetime.datetime.now()
now.isoformat()
# ouptut --> ''2016-03-09T08:18:20.860968''
Podrías usar métodos de formato de cadena 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''
Puede convertir datetime a cadena. published_at="{}".format(self.published_at)
type-specific formatting se puede utilizar:
t = datetime.datetime(2012, 2, 23, 0, 0)
"{:%m/%d/%Y}".format(t)
Salida:
''02/23/2012''
date objetos de date y date y datetime (y la time también) admiten un mini-idioma para especificar la salida , y hay dos formas de acceder a él:
- método directo de llamada:
dt.strftime(''format here''); y - nuevo método de formato:
''{:format here}''.format(dt)
Entonces tu ejemplo podría verse como:
dt.strftime(''%m/%d/%Y'')
o
''{:%m/%d/%Y}''.format(dt)
Para completar el tema: también puede acceder directamente a los atributos del objeto, pero solo obtiene los números:
''%s/%s/%s'' % (dt.month, dt.day, dt.year)
El tiempo que lleva aprender el mini-idioma lo vale.
Para referencia, aquí están los códigos utilizados en el mini-idioma:
-
%aWeekday como nombre abreviado del local. -
%AWeekday como nombre completo del local. -
%wWeekday como número decimal, donde 0 es domingo y 6 es sábado. -
%dDía del mes como un número decimal con cero rellenos. -
%bMes como nombre abreviado del local. -
%Bmes como nombre completo del local. -
%mMes como un número decimal con cero rellenos. 01, ..., 12 -
%yAño sin siglo como un número decimal con cero rellenos. 00, ..., 99 -
%YAño con siglo como número decimal. 1970, 1988, 2001, 2013 -
%HHour (reloj de 24 horas) como un número decimal sin relleno. 00, ..., 23 -
%IHour (reloj de 12 horas) como un número decimal sin relleno. 01, ..., 12 - El equivalente de
%pLocale de AM o PM. -
%MMinuto como un número decimal rellenado con cero. 00, ..., 59 -
%SSegundo como un número decimal rellenado con cero. 00, ..., 59 -
%fMicrosegundo como un número decimal, rellenado con cero a la izquierda. 000000, ..., 999999 -
%zUTC offset en la forma + HHMM o -HHMM (vacío si no se usa), +0000, -0400, +1030 -
%ZNombre de la zona horaria (vacío si es ingenuo), UTC, EST, CST -
%jDía del año como un número decimal con cero rellenos. 001, ..., 366 -
%UNúmero de semana del año (el domingo es el primero) como un número decimal con cero rellenado. -
%WNúmero de la semana del año (el lunes es el primero) como un número decimal. -
%cRepresentación apropiada de la fecha y hora del local. -
%xrepresentación apropiada de la fecha del local. - Representación apropiada del tiempo de
%XLocale. -
%%Un carácter literal ''%''.