sistema - python importar fecha
Convertir fecha a fecha y hora en Python (10)
Hay varias formas, aunque creo que la que usted menciona (y no le gusta) es la más legible.
>>> t=datetime.date.today()
>>> datetime.datetime.fromordinal(t.toordinal())
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(t.year, t.month, t.day)
datetime.datetime(2009, 12, 20, 0, 0)
>>> datetime.datetime(*t.timetuple()[:-4])
datetime.datetime(2009, 12, 20, 0, 0)
y así sucesivamente, pero básicamente, todos dependen de la extracción apropiada de información del objeto de la date
y de su arado de nuevo en la función de clase o ctor adecuada para datetime
.
Pregunta tonta, pero hay un método incorporado para convertir una date
a una datetime
y datetime
en Python, es decir. obtener la datetime
y datetime
para la medianoche de la date
? La conversión opuesta es fácil: datetime
tiene un método .date()
. ¿Realmente tengo que llamar manualmente a datetime(d.year, d.month, d.day)
?
Hoy siendo 2016, creo que la solución más limpia es proporcionada por pandas Timestamp:
from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)
La marca de tiempo es el equivalente de pandas de datetime y es intercambiable con él en la mayoría de los casos. Comprobar:
from datetime import datetime
isinstance(pd.Timestamp(d), datetime)
Pero en caso de que realmente desee una fecha de vainilla, todavía puede hacer:
pd.Timestamp(d).to_datetime()
Las marcas de tiempo son mucho más poderosas que las fechas de referencia, entre otras cuando se trata de zonas horarias. En realidad, las marcas de tiempo son tan poderosas que es una pena que estén tan mal documentadas ...
La respuesta aceptada es correcta, pero preferiría evitar usar datetime.min.time()
porque no es obvio para mí exactamente lo que hace. Si es obvio para ti, entonces más poder para ti. También siento lo mismo sobre el método de timetuple
y la confianza en el orden.
En mi opinión, la forma más legible y explícita de hacer esto sin confiar en que el lector esté muy familiarizado con el módulo API de datetime
es:
from datetime import date, datetime
today = date.today()
today_with_time = datetime(
year=today.year,
month=today.month,
day=today.day,
)
Esa es mi opinión de que "explícito es mejor que implícito".
Puede usar datetime.combine (fecha, hora); para el momento, creas un objeto datetime.time
inicializado a medianoche.
from datetime import date
from datetime import datetime
d = date.today()
datetime.combine(d, datetime.min.time())
Puede usar el método date.timetuple()
y desempaquetar el operador *
.
args = d.timetuple()[:6]
datetime.datetime(*args)
Puedes usar easy_date para hacerlo más fácil:
import date_converter
my_datetime = date_converter.date_to_datetime(my_date)
Si necesita algo rápido, datetime_object.date()
le da una fecha de un objeto datetime.
Soy un novato en Python. Pero este código funcionó para mí, que convierte la entrada especificada que proporciono a datetime. Aquí está el código. Corrígeme si me equivoco.
import sys
from datetime import datetime
from time import mktime, strptime
user_date = ''02/15/1989''
if user_date is not None:
user_date = datetime.strptime(user_date,"%m/%d/%Y")
else:
user_date = datetime.now()
print user_date
Una forma de convertir de fecha a fecha y hora que no se ha mencionado aún:
from datetime import date, datetime
d = date.today()
datetime.strptime(d.strftime(''%Y%m%d''), ''%Y%m%d'')
Usando pandas para convertir una serie de fechas a fechas de tiempo de python:
dates = pd.DataFrame(
{''date'': pd.DatetimeIndex(start=''2017-01-01'', end=''2017-01-5'', freq=''D'')})
>>> dates
date
0 2017-01-01
1 2017-01-02
2 2017-01-03
3 2017-01-04
4 2017-01-05
>>> pd.DatetimeIndex(dates[''date'']).to_pydatetime().tolist()
[datetime.datetime(2017, 1, 1, 0, 0),
datetime.datetime(2017, 1, 2, 0, 0),
datetime.datetime(2017, 1, 3, 0, 0),
datetime.datetime(2017, 1, 4, 0, 0),
datetime.datetime(2017, 1, 5, 0, 0)]
Uno puede necesitar primero convertir las fechas:
dates = pd.DataFrame(
{''date'': [''2017-01-01'', ''2017-01-02'', ''2017-01-03'', ''2017-01-04'', ''2017-01-05'']})
dates[''date''] = pd.DatetimeIndex(dates[''date''])
pd.DatetimeIndex(dates[''date'']).to_pydatetime().tolist()