파이썬 날짜 시간 객체를 자르는 고급 방법은 무엇입니까?
이 특별한 경우, 오늘까지. 기본적으로시, 분, 초 및 마이크로 초를 0으로 설정합니다.
출력이 문자열이 아닌 datetime 객체가되기를 원합니다.
답변
나는 이것이 당신이 찾고있는 것이라고 생각합니다 …
>>> import datetime
>>> dt = datetime.datetime.now()
>>> dt = dt.replace(hour=0, minute=0, second=0, microsecond=0) # Returns a copy
>>> dt
datetime.datetime(2011, 3, 29, 0, 0)
그러나 시간의 측면에 신경 쓰지 않는다면 실제로 물건 주위를 통과해야 date
합니다 …
>>> d_truncated = datetime.date(dt.year, dt.month, dt.day)
>>> d_truncated
datetime.date(2011, 3, 29)
답변
시간에 신경 쓰지 date
않는다면 a를 사용하십시오 datetime
.
>>> now = datetime.now()
>>> now.date()
datetime.date(2011, 3, 29)
다음과 같이 날짜 시간을 업데이트 할 수 있습니다.
>>> now.replace(minute=0, hour=0, second=0, microsecond=0)
datetime.datetime(2011, 3, 29, 0, 0)
답변
4 년 후 : 피하는 또 다른 방법 replace
나는 4 년 전에 받아 들여진 대답이 작동한다는 것을 알고 있지만 다음을 사용하는 것보다 약간 가벼운 것 같습니다 replace
.
dt = datetime.date.today()
dt = datetime.datetime(dt.year, dt.month, dt.day)
노트
datetime
시간 속성을 생성자에 전달하지 않고 객체 를 만들면 자정이됩니다.- 다른 사람들이 지적했듯이, 이것은 나중에 timedelta와 함께 사용하기 위해 datetime 객체를 원한다고 가정합니다.
- 물론 첫 번째 줄로 이것을 대체 할 수 있습니다.
dt = datetime.datetime.now()
답변
날짜 시간 객체 는 변경할 수 없으므로 잘라낼 수 없습니다 .
그러나 다음은 원래 날짜 또는 tzinfo를 버리지 않고 0 시간, 분, 초 및 마이크로 초 필드로 새로운 날짜 시간을 구성하는 한 가지 방법입니다.
newdatetime = now.replace(hour=0, minute=0, second=0, microsecond=0)
답변
주어진 datetime 객체에 해당하는 자정을 얻으려면 datetime.combine()
method를 사용할 수 있습니다 .
>>> from datetime import datetime, time
>>> dt = datetime.utcnow()
>>> dt.date()
datetime.date(2015, 2, 3)
>>> datetime.combine(dt, time.min)
datetime.datetime(2015, 2, 3, 0, 0)
에 비해 장점 방법 이다 기반 솔루션을 경우에도 계속 작동 모듈 출시는 나노초 지원 ..replace()
datetime.combine()
datetime
tzinfo
DST 전환으로 인해 자정에 utc 오프셋이 다를 수 있으므로 순진 솔루션 (설정 tzinfo
시간 속성)이 실패 할 수 있습니다. 참조 내가 특정 시간대에 대해 “자정”의 UTC 시간을 어떻게합니까?
답변
팬더 를 사용할 수 있습니다 (해당 작업에는 오버 헤드가 발생할 수 있음). 일반적인 숫자 및 오프셋 별칭의 팬더 주파수와 같이 round , floor 및 ceil을 사용할 수 있습니다 .
import pandas as pd
import datetime as dt
now = dt.datetime.now()
pd_now = pd.Timestamp(now)
freq = '1d'
pd_round = pd_now.round(freq)
dt_round = pd_round.to_pydatetime()
print(now)
print(dt_round)
"""
2018-06-15 09:33:44.102292
2018-06-15 00:00:00
"""
답변
datetime.strftime을 사용하여 일, 월, 년을 추출 할 수 있습니다 …
예 :
from datetime import datetime
d = datetime.today()
# Retrieves the day and the year
print d.strftime("%d-%Y")
출력 (오늘의 경우) :
29-2011
요일을 검색하려는 경우 다음과 같이 요일 속성을 사용할 수 있습니다.
from datetime import datetime
d = datetime.today()
# Retrieves the day
print d.day
출력 (오늘) :
29