파이썬에서 날짜를 날짜 / 시간으로 변환 방법이 datetime있습니까? 반대의 변환이 용이 :

주어진 날짜의 자정을 얻는 것과 같이 datea datetime를 파이썬으로 변환하는 기본 제공 방법이 datetime있습니까? 반대의 변환이 용이 : datetime.date()방법을.

정말 수동으로 전화 datetime(d.year, d.month, d.day)해야합니까?



답변

당신은 사용할 수 있습니다 datetime.combine(date, time); 당분간 datetime.time자정으로 초기화 된 객체 를 만듭니다 .

from datetime import date
from datetime import datetime

dt = datetime.combine(date.today(), datetime.min.time())


답변

당신이 언급하고 싫어하는 것이 가장 읽기 쉬운 방법이라고 생각하지만 몇 가지 방법이 있습니다.

>>> 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)

등등-그러나 기본적으로 그것들은 모두 date객체 로부터 정보를 적절히 추출 하고 그것을 위해 적절한 ctor 나 classfunction으로 다시 쟁기질하는 것에 달려 있습니다 datetime.


답변

허용 된 답변은 정확하지만 사용 datetime.min.time()하는 것이 정확하지 않기 때문에 사용 하지 않는 것이 좋습니다. 그것이 당신에게 분명하다면, 당신에게 더 많은 힘. 나는 또한 timetuple방법과 주문에 대한 의존성에 대해서도 같은 방식으로 생각합니다 .

내 의견으로는 datetime모듈 API에 대해 잘 알고 독자에게 의존하지 않고 이것을 읽을 수있는 가장 읽기 쉽고 명확한 방법 은 다음과 같습니다.

from datetime import date, datetime
today = date.today()
today_with_time = datetime(
    year=today.year,
    month=today.month,
    day=today.day,
)

“명시적인 것이 묵시적인 것보다 낫다”


답변

date.timetuple()메소드와 압축 풀기 연산자를 사용할 수 있습니다 *.

args = d.timetuple()[:6]
datetime.datetime(*args)


답변

오늘 2016 년에 팬더 타임 스탬프가 가장 깨끗한 솔루션을 제공한다고 생각합니다.

from datetime import date
import pandas as pd
d = date.today()
pd.Timestamp(d)

타임 스탬프는 날짜 / 시간에 해당하는 팬더이며 대부분의 경우 팬더와 호환됩니다. 검사:

from datetime import datetime
isinstance(pd.Timestamp(d), datetime)

그러나 바닐라 날짜 시간을 정말로 원한다면 여전히 할 수 있습니다.

pd.Timestamp(d).to_datetime()

타임 스탬프는 시간대를 처리 할 때 다른 것보다 날짜 / 시간보다 훨씬 강력합니다. 실제로, 타임 스탬프는 매우 강력하여 문서화가 잘되어 있지 않은 것이 유감입니다 …


답변

아직 언급되지 않은 날짜에서 날짜 시간으로 변환하는 한 가지 방법 :

from datetime import date, datetime
d = date.today()
datetime.strptime(d.strftime('%Y%m%d'), '%Y%m%d')


답변

당신은 사용할 수 있습니다 easy_date을 쉽게 그것을 만들 :

import date_converter
my_datetime = date_converter.date_to_datetime(my_date)