Python으로 월요일 날짜 찾기
Python을 사용하여 현재 날짜를 기반으로 이전 월요일 날짜를 어떻게 찾습니까? 나는 datetime.weekday()
그것을 사용할 수 있다고 생각 했지만, 갇혀있다.
기본적으로 오늘 날짜와 월요일 날짜를 찾아 django에서 다음을 사용하여 날짜 범위 쿼리를 구성하고 싶습니다 created__range=(start_date, end_date)
.
>>> import datetime
>>> today = datetime.date.today()
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
설명의 몇 마디 :
오늘 날짜를 취하십시오. 이번 주에 이미 지난 일 수를 뺍니다 (이렇게하면 '마지막'월요일이됩니다). 일주일을 추가하십시오.
편집 : 위의 내용은 '다음 월요일'용이지만 '지난 월요일'을 찾고 있었으므로 사용할 수 있습니다.
today - datetime.timedelta(days=today.weekday())
ChristopheD의 게시물은 귀하가 원하는 것에 가깝습니다. 댓글을 달 수있는 담당자가 충분하지 않습니다.
대신 (실제로 다음 월요일을 제공합니다) :
>>> 오늘 + datetime.timedelta (days = -today.weekday (), weeks = 1) datetime.date (2009, 10, 26)
내가 말할 것:
>>> last_monday = 오늘-datetime.timedelta (days = today.weekday ())
이전 주를 원하면 'weeks = 1'매개 변수를 추가하십시오.
이것은 타임 델타를 빼기 때문에 코드를 더 읽기 쉽게 만듭니다. 이렇게하면 음수 및 양수 오프셋이있는 타임 델타를 추가하여 발생하는 혼동이 사라집니다.
가장 쉬운 방법은 다음과 같이 python-dateutil을 사용하는 것입니다 .
from datetime import date
from dateutil.relativedelta import relativedelta, MO
today = date.today()
last_monday = today + relativedelta(weekday=MO(-1))
print last_monday
참고 : OP는 댓글에 " 지난 월요일을 찾고있었습니다 "라고 말합니다 . 이것은 우리가 오늘 이전에 발생한 마지막 월요일을 찾고 있다는 것을 의미합니다.
datetime
모듈 만 사용하여 계산을 올바르게 수행하기가 약간 어렵습니다 (특히 위의 "지난 월요일"해석을 고려하고 투박함을 피하려는 경우 if-statements
). 예를 today
들어이 월요일 이면 2013-12-23
,
today - DT.timedelta(days=today.weekday())
(지난 월요일이 아님) 2013-12-23
과 같은 날인을 반환합니다 today
.
dateutil 모듈 사용의 장점은 까다로운 정신 계산을 수행하거나 독자가 올바른 날짜를 얻기 위해 동일한 작업을 수행하도록 할 필요가 없다는 것입니다. dateutil
당신을 위해 모든 것을 :
import dateutil.relativedelta as rdelta
import datetime as DT
today = DT.date(2013, 12, 23) # Monday
past_monday = today + rdelta.relativedelta(days=-1, weekday=rdelta.MO(-1))
print(past_monday)
# 2013-12-16
next_monday = today + rdelta.relativedelta(days=1, weekday=rdelta.MO(+1))
print(next_monday)
# 2013-12-30
참고 days=-1
보증에 필요한 past_monday
아닌 다른 날입니다 today
.
timedeltas 및 datetime 모듈 사용 :
import datetime
datetime.date.today()+datetime.timedelta(days=-datetime.date.today().weekday())
Natty 를 사용할 수 있습니다 . parsedatetime 및 dateparser 시도 했습니다 . 이 세 가지를 비교해 보면 Natty 가 최고 라고 생각 합니다.
결과를 얻으려면 다음과 같이 사용하십시오.
>>> from natty import DateParser
>>> dp = DateParser('last monday')
>>> dp.result()
[datetime.datetime(2016, 8, 1, 17, 35, 5, tzinfo=tzlocal())] #Today is 9th of August 2016 5.35 PM
Github 링크 : https://github.com/eadmundo/python-natty
시도해보세요. 더 많은 것을 할 수 있습니다!
"가장 최근 월요일"이 아닌 "가장 최근 일요일"을 얻는 방법을 찾고있는이 페이지에 표시되는 미래의 Google 사용자를 위해 datetime.weekday ()가 월요일을 첫 번째 날로 취급하기 때문에 몇 가지 추가 계산을 수행해야합니다. 금주의:
today = datetime.date.today()
weekday = today.weekday() + 1
start_day = today - datetime.timedelta(days=weekday % 7)
오늘이 화요일이면 start_day
지난 일요일로 설정 됩니다. 오늘은 일요일이 세트 인 경우 start_day
에 오늘 . 원정 가져 % 7
일요일 현재의 경우 일주일 전에로 당신이 원하는 경우에 "마지막 일요일을".
d = datetime.datetime.today().weekday()
gives you today's day of the week, counting 0 (monday) to 6 (sunday)
datetime.datetime.today() + datetime.timedelta(days=(7-d)%7)
(7-d)%7 gives you days until Monday, or leaves you where you are if today is Monday
참고URL : https://stackoverflow.com/questions/1622038/find-mondays-date-with-python
'Program Tip' 카테고리의 다른 글
카피 바라 테스트를위한 드롭 다운의 선택 값 가져 오기 (0) | 2020.12.13 |
---|---|
svn 로컬 사본에서 수정 된 파일 목록 (0) | 2020.12.13 |
슬라이스를 가변 입력으로 어떻게 전달할 수 있습니까? (0) | 2020.12.12 |
변경할 때마다 컨테이너를 다시 작성 하시겠습니까? (0) | 2020.12.12 |
Angular 1.5 구성 요소 대 이전 지시문-링크 함수는 어디에 있습니까? (0) | 2020.12.12 |