내일 날짜를 얻는 가장 깨끗하고 파이썬적인 방법은 무엇입니까? 하루에 하나를 추가하거나 월말에 일을 처리하는 것보다 더 나은 방법이 있어야합니다.
답변
datetime.date.today() + datetime.timedelta(days=1)
트릭을해야한다
답변
timedelta
일, 초, 마이크로 초, 밀리 초, 분, 시간 또는 주 추가를 처리 할 수 있습니다.
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2009, 10, 1)
>>> today + datetime.timedelta(days=1)
datetime.date(2009, 10, 2)
>>> datetime.date(2009,10,31) + datetime.timedelta(hours=24)
datetime.date(2009, 11, 1)
의견에서 질문했듯이 윤일에는 문제가 없습니다.
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=1)
datetime.date(2004, 2, 29)
>>> datetime.date(2004, 2, 28) + datetime.timedelta(days=2)
datetime.date(2004, 3, 1)
>>> datetime.date(2005, 2, 28) + datetime.timedelta(days=1)
datetime.date(2005, 3, 1)
답변
윤초 처리 없음 tho :
>>> from datetime import datetime, timedelta
>>> dt = datetime(2008,12,31,23,59,59)
>>> str(dt)
'2008-12-31 23:59:59'
>>> # leap second was added at the end of 2008,
>>> # adding one second should create a datetime
>>> # of '2008-12-31 23:59:60'
>>> str(dt+timedelta(0,1))
'2009-01-01 00:00:00'
>>> str(dt+timedelta(0,2))
'2009-01-01 00:00:01'
꿰매다.
편집-@Mark : 문서는 “예”라고 말하지만 코드는 “별로”라고 말합니다.
>>> time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")
(2008, 12, 31, 23, 59, 60, 2, 366, -1)
>>> time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
1230789600.0
>>> time.gmtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 6, 0, 0, 3, 1, 0)
>>> time.localtime(time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S")))
(2009, 1, 1, 0, 0, 0, 3, 1, 0)
나는 gmtime 또는 localtime이 mktime에 의해 반환 된 값을 취하고 60 초를 사용하여 원래 튜플을 돌려 준다고 생각합니다. 그리고이 테스트는이 윤초가 사라질 수 있음을 보여줍니다.
>>> a = time.mktime(time.strptime("2008-12-31 23:59:60","%Y-%m-%d %H:%M:%S"))
>>> b = time.mktime(time.strptime("2009-01-01 00:00:00","%Y-%m-%d %H:%M:%S"))
>>> a,b
(1230789600.0, 1230789600.0)
>>> b-a
0.0
답변
기본 time
모듈도이를 처리 할 수 있습니다.
import time
time.localtime(time.time() + 24*3600)