반응형
두 날짜 사이의 모든 날짜-날짜 인쇄 [중복]
이 질문에는 이미 답변이 있습니다.
- Python 20 답변 에서 다양한 날짜 반복
예를 들면 다음과 같습니다.
from datetime import date
d1 = date(2008,8,15)
d2 = date(2008,9,15)
중간에 모든 날짜를 인쇄하는 간단한 코드를 찾고 있습니다.
2008,8,15
2008,8,16
2008,8,17
...
2008,9,14
2008,9,15
감사
나는 이것을 생각해 냈다.
from datetime import date, timedelta
sdate = date(2008, 8, 15) # start date
edate = date(2008, 9, 15) # end date
delta = edate - sdate # as timedelta
for i in range(delta.days + 1):
day = sdate + timedelta(days=i)
print(day)
출력 :
2008-08-15
2008-08-16
...
2008-09-13
2008-09-14
2008-09-15
귀하의 질문에 사이에 날짜가 필요하지만 시작 및 종료 지점을 포함해야한다고 생각합니다. 종료 날짜를 제거하려면 범위 기능 종료시 "+ 1"을 삭제하십시오. 시작 날짜를 제거하려면 range 함수의 시작 부분에 1 개의 인수를 삽입하십시오.
목록 이해 사용하기 :
from datetime import date, timedelta
d1 = date(2008,8,15)
d2 = date(2008,9,15)
# this will give you a list containing all of the dates
dd = [d1 + timedelta(days=x) for x in range((d2-d1).days + 1)]
for d in dd:
print d
# you can't join dates, so if you want to use join, you need to
# cast to a string in the list comprehension:
ddd = [str(d1 + timedelta(days=x)) for x in range((d2-d1).days + 1)]
# now you can join
print "\n".join(ddd)
본질적으로 Gringo Suave의 답변과 동일하지만 발전기가 있습니다.
from datetime import datetime, timedelta
def datetime_range(start=None, end=None):
span = end - start
for i in xrange(span.days + 1):
yield start + timedelta(days=i)
그런 다음 다음과 같이 사용할 수 있습니다.
In: list(datetime_range(start=datetime(2014, 1, 1), end=datetime(2014, 1, 5)))
Out:
[datetime.datetime(2014, 1, 1, 0, 0),
datetime.datetime(2014, 1, 2, 0, 0),
datetime.datetime(2014, 1, 3, 0, 0),
datetime.datetime(2014, 1, 4, 0, 0),
datetime.datetime(2014, 1, 5, 0, 0)]
또는 이렇게 :
In []: for date in datetime_range(start=datetime(2014, 1, 1), end=datetime(2014, 1, 5)):
...: print date
...:
2014-01-01 00:00:00
2014-01-02 00:00:00
2014-01-03 00:00:00
2014-01-04 00:00:00
2014-01-05 00:00:00
import datetime
d1 = datetime.date(2008,8,15)
d2 = datetime.date(2008,9,15)
diff = d2 - d1
for i in range(diff.days + 1):
print (d1 + datetime.timedelta(i)).isoformat()
import datetime
begin = datetime.date(2008, 8, 15)
end = datetime.date(2008, 9, 15)
next_day = begin
while True:
if next_day > end:
break
print next_day
next_day += datetime.timedelta(days=1)
참고 URL : https://stackoverflow.com/questions/7274267/print-all-day-dates-between-two-dates
반응형
'IT' 카테고리의 다른 글
(grep) 정규식이 아닌 ASCII 문자와 일치합니까? (0) | 2020.06.09 |
---|---|
유형이 원시인지 테스트하는 방법 (0) | 2020.06.09 |
문자열에 숫자가 포함되어 있는지 확인 (0) | 2020.06.09 |
Oracle에서 활성 / 열린 연결을 나열하는 방법은 무엇입니까? (0) | 2020.06.09 |
숫자 인덱스를 통해 Dictionary.Keys 키에 액세스 (0) | 2020.06.09 |