나는 다음과 같은 것을 시도하고 있습니다.
time() + timedelta(hours=1)
그러나 파이썬은 그것을 허용하지 않습니다 . 분명히 좋은 이유가 있습니다.
누구든지 간단한 해결 방법이 있습니까?
나는 다음과 같은 것을 시도하고 있습니다.
time() + timedelta(hours=1)
그러나 파이썬은 그것을 허용하지 않습니다 . 분명히 좋은 이유가 있습니다.
누구든지 간단한 해결 방법이 있습니까?
답변:
솔루션은 질문에 제공 한 링크에 있습니다 .
datetime.combine(date.today(), time()) + timedelta(hours=1)
전체 예 :
from datetime import date, datetime, time, timedelta
dt = datetime.combine(date.today(), time(23, 55)) + timedelta(minutes=30)
print dt.time()
산출:
00:25:00
date.today()양수 및 음수 타임 델타를 모두 지원하는 데 사용됩니다. date.min긍정적 인 timedeltas에서 작동합니다.
datetime.MAXYEAR9999에서 9999로 남을 것
프로젝트에 다른 파일 / 종속성을 추가 할 가치가 있다면 datetime.time산술을 수행 할 수있는 기능을 확장하는 작은 클래스를 방금 작성했습니다 . 자정이 지나면 다음과 같이 둘러 쌉니다.
>>> from nptime import nptime
>>> from datetime import timedelta
>>> afternoon = nptime(12, 24) + timedelta(days=1, minutes=36)
>>> afternoon
nptime(13, 0)
>>> str(afternoon)
'13:00:00'
PyPi에서 nptime( "non-pedantic time") 또는 GitHub에서 사용할 수 있습니다. https://github.com/tgs/nptime
이것은 약간 불쾌하지만 :
from datetime import datetime, timedelta
now = datetime.now().time()
# Just use January the first, 2000
d1 = datetime(2000, 1, 1, now.hour, now.minute, now.second)
d2 = d1 + timedelta(hours=1, minutes=23)
print d2.time()
datetime모듈 용. 그렇지 않으면 오버플로 오류 등을 수동으로 처리해야합니다.
해결 방법 :
t = time()
t2 = time(t.hour+1, t.minute, t.second, t.microsecond)
그다지 정밀도가 필요하지 않은 경우 마이크로 초를 생략 할 수도 있습니다.
t == time(23,59)이 방법은 작동하지 않습니다. 추가하는 경우 1에 t.hour당신은 얻을 것이다ValueError: hour must be in 0..23
datetime.timedelta(days=1)datetime 개체에 하루를 추가 해야 합니다. 디버그 땅을 피할 것입니다.
today()일광 절약 시간 전환하기 전에 날이, 그리고 timedelta이 다른 시간대로 확장? 이 코드는 로케일의 영향을 받습니까?