주어진 날짜의 자정을 얻는 것과 같이 date
a datetime
를 파이썬으로 변환하는 기본 제공 방법이 datetime
있습니까? 반대의 변환이 용이 : datetime
이 .date()
방법을.
정말 수동으로 전화 datetime(d.year, d.month, d.day)
해야합니까?
datetime.from_date()
생성자.
주어진 날짜의 자정을 얻는 것과 같이 date
a datetime
를 파이썬으로 변환하는 기본 제공 방법이 datetime
있습니까? 반대의 변환이 용이 : datetime
이 .date()
방법을.
정말 수동으로 전화 datetime(d.year, d.month, d.day)
해야합니까?
datetime.from_date()
생성자.
답변:
당신은 사용할 수 있습니다 datetime.combine(date, time)
; 당분간 datetime.time
자정으로 초기화 된 객체 를 만듭니다 .
from datetime import date
from datetime import datetime
dt = datetime.combine(date.today(), datetime.min.time())
datetime.combine(d, time())
time.time
또는 a 이외의 다른 항목 을 전달하면 combine ()에서 예외가 발생합니다 datetime.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(d.year, d.month, d.day)
허용 된 답변보다 훨씬 더 읽기 쉬운 것 같습니다 datetime.combine(d, datetime.min.time())
.
datetime(d.year, d.month, d.day)
더 분명한 것처럼 보이는 반면 (시간 구성 요소가없는 날짜 시간). 그러나 중요한 것은 "자정"과 같은 변수 이름을 사용하면 독자가 무엇을 datetime.time.min
나타내는 지 모르더라도 결과가 무엇인지 분명하게 알 수 있습니다.
datetime(d.year, d.mont, d.day)
더 분명 할뿐만 아니라 더 빠릅니다 .
허용 된 답변은 정확하지만 사용 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,
)
"명시적인 것이 묵시적인 것보다 낫다"
d2dt = lambda date: datetime(year=date.year, month=date.month, day=date.day)
이 답변의 라이너 기능.
datetime
시간대를 인식 해야 할 수도 있습니다. 이 경우 예 import pytz
를 들어을 추가 한 다음 추가 할 수 있습니다 tzinfo=pytz.timezone('Europe/London')
.
date.timetuple()
메소드와 압축 풀기 연산자를 사용할 수 있습니다 *
.
args = d.timetuple()[:6]
datetime.datetime(*args)
datetime.combine
@kiamlaluno의 답변을 통해 발견하기 전에 이것을 사용했습니다 . 나는 그것이 꽤 비유 적이라고 생각합니다. 특히 datetime.time
물체를 만드는 것이 datetime.time(*map(int,"H:M:S".split(":")))
어쨌든 비슷하게 보일 것 입니다 ...
오늘 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)
빠른 것이 필요한 경우 datetime_object.date()
날짜 / 시간 객체의 날짜를 제공합니다.
date
에 datetime
.
datetime
.date()
저는 파이썬 초보자입니다. 그러나이 코드는 내가 제공 한 지정된 입력을 datetime으로 변환하는 데 효과적이었습니다. 코드는 다음과 같습니다. 틀 렸으면 말해줘.
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
datetime.date()
객체 가 있습니다.
.datetime()
메소드 가 있어야합니다 . 어리석은 것은 그러한 방법이 없다는 것입니다.