Hướng dẫn how do i get last week monday date in python? - làm cách nào để nhận ngày thứ hai tuần trước trong python?

90

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào để tôi tìm thấy ngày thứ Hai trước đó, dựa trên ngày hiện tại bằng Python? Tôi nghĩ có lẽ tôi có thể sử dụng:

today - datetime.timedelta(days=today.weekday())
2 để làm điều đó, nhưng tôi đang bị mắc kẹt.

Về cơ bản, tôi muốn tìm ngày hôm nay và ngày thứ Hai để xây dựng truy vấn phạm vi ngày trong Django bằng cách sử dụng:

today - datetime.timedelta(days=today.weekday())
3.

Hướng dẫn how do i get last week monday date in python? - làm cách nào để nhận ngày thứ hai tuần trước trong python?

Acrosman

12.7k10 Huy hiệu vàng39 Huy hiệu bạc55 Huy hiệu Đồng10 gold badges39 silver badges55 bronze badges

Hỏi ngày 25 tháng 10 năm 2009 lúc 20:53Oct 25, 2009 at 20:53

2

>>> import datetime
>>> today = datetime.date.today()
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

Một số từ giải thích:

Mất ngày vào ngày. Trừ số ngày đã trôi qua trong tuần này (điều này giúp bạn 'thứ hai' cuối cùng). Thêm một tuần.

Chỉnh sửa: Trên đây là cho 'Thứ Hai tới', nhưng vì bạn đang tìm kiếm 'Thứ Hai tuần trước', bạn có thể sử dụng: The above is for 'next monday', but since you were looking for 'last monday' you could use

today - datetime.timedelta(days=today.weekday())

Đã trả lời ngày 25 tháng 10 năm 2009 lúc 21:02Oct 25, 2009 at 21:02

ChristophedchristophedChristopheD

109K27 Huy hiệu vàng160 Huy hiệu bạc177 Huy hiệu đồng27 gold badges160 silver badges177 bronze badges

6

Bài đăng của Christophed gần với những gì bạn muốn. Tôi không có đủ đại diện để đưa ra nhận xét :(

Thay vì (thực sự cung cấp cho bạn thứ Hai sắp tới tiếp theo):

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)

Tôi sẽ nói:

>>> last_monday = today - datetime.timedelta(days=today.weekday())

Nếu bạn muốn tuần trước, hãy thêm tham số 'Tuần = 1'.

Điều này làm cho mã dễ đọc hơn vì bạn đang trừ một thời gian. Điều này làm rõ bất kỳ sự nhầm lẫn nào gây ra bằng cách thêm một thời gian có độ lệch tiêu cực và tích cực.

Đã trả lời ngày 25 tháng 10 năm 2009 lúc 22:12Oct 25, 2009 at 22:12

2

Tôi nghĩ rằng cách dễ nhất là sử dụng Python-Datesutil như thế này:

from datetime import date
from dateutil.relativedelta import relativedelta, MO

today = date.today()
last_monday = today + relativedelta(weekday=MO(-1))
print last_monday

Hướng dẫn how do i get last week monday date in python? - làm cách nào để nhận ngày thứ hai tuần trước trong python?

Paul

9.79411 huy hiệu vàng48 Huy hiệu bạc78 Huy hiệu đồng11 gold badges48 silver badges78 bronze badges

Đã trả lời ngày 16 tháng 2 năm 2012 lúc 19:13Feb 16, 2012 at 19:13

diegueus9diegueus9diegueus9

26.9K16 Huy hiệu vàng61 Huy hiệu bạc74 Huy hiệu đồng16 gold badges61 silver badges74 bronze badges

0

Lưu ý: OP nói trong các bình luận, "Tôi đã tìm kiếm vào thứ Hai vừa qua". Tôi nói điều này có nghĩa là chúng tôi đang tìm kiếm thứ Hai tuần trước xảy ra nghiêm ngặt trước ngày hôm nay.

Tính toán là một chút khó khăn để có được quyền chỉ bằng cách sử dụng mô -đun

today - datetime.timedelta(days=today.weekday())
4 (đặc biệt là đưa ra cách giải thích trên của "Thứ Hai vừa qua" và nếu bạn muốn tránh Clunky
today - datetime.timedelta(days=today.weekday())
5). Ví dụ: nếu
today - datetime.timedelta(days=today.weekday())
6 là thứ Hai như
today - datetime.timedelta(days=today.weekday())
7,

today - DT.timedelta(days=today.weekday())

Trả lại

today - datetime.timedelta(days=today.weekday())
7, cùng ngày với
today - datetime.timedelta(days=today.weekday())
6 (không phải thứ Hai vừa qua).

Ưu điểm của việc sử dụng mô -đun DateUtil là bạn không phải thực hiện các tính toán tinh thần khó khăn cũng như không buộc người đọc phải làm điều tương tự để có được ngày đúng.

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
0 làm tất cả cho bạn:

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

Lưu ý rằng

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
1 là cần thiết để đảm bảo rằng
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
2 là một ngày khác so với
today - datetime.timedelta(days=today.weekday())
6.

Đã trả lời ngày 25 tháng 10 năm 2009 lúc 21:28Oct 25, 2009 at 21:28

UnutbuUnutbuunutbu

801K173 Huy hiệu vàng1724 Huy hiệu bạc1625 Huy hiệu Đồng173 gold badges1724 silver badges1625 bronze badges

1

Đối với những người chơi googlers trong tương lai, những người xuất hiện trên trang này để tìm cách để có được "Chủ nhật gần đây nhất", thay vì "Thứ Hai gần đây nhất", bạn cần thực hiện một số toán học bổ sung vì DateTime.Weekday () coi thứ Hai là ngày đầu tiên trong tuần:

today = datetime.date.today()
weekday = today.weekday() + 1
start_day = today - datetime.timedelta(days=weekday % 7)

Nếu hôm nay là thứ ba, điều này sẽ đặt

>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
4 đến Chủ nhật tuần trước. Nếu hôm nay là Chủ nhật, điều này sẽ đặt
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
4 cho đến ngày hôm nay. Lấy đi
>>> today + datetime.timedelta(days=-today.weekday(), weeks=1)
datetime.date(2009, 10, 26)
6 nếu bạn muốn "Chủ nhật tuần trước" sẽ là một tuần trước nếu hiện tại là Chủ nhật.

Đã trả lời ngày 7 tháng 12 năm 2017 lúc 22:13Dec 7, 2017 at 22:13

Coredumperrorcoredumperrorcoredumperror

7.7196 Huy hiệu vàng33 Huy hiệu bạc41 Huy hiệu đồng6 gold badges33 silver badges41 bronze badges

Sử dụng mô -đun Timedeltas và DateTime:

import datetime
datetime.date.today()+datetime.timedelta(days=-datetime.date.today().weekday())

Đã trả lời ngày 25 tháng 10 năm 2009 lúc 21:06Oct 25, 2009 at 21:06

elzappelzappelzapp

1.9514 huy hiệu vàng15 Huy hiệu bạc22 Huy hiệu đồng4 gold badges15 silver badges22 bronze badges

Bạn có thể sử dụng Natty. Tôi đã thử Parsedatetime và DateParser. So sánh ba người này, tôi nghĩ Natty là người tốt nhất.Natty. I tried parsedatetime and dateparser. Comparing these three, I think Natty is the best one.

Để có được kết quả của bạn, hãy sử dụng như thế này:

>>> 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

Liên kết Github: https://github.com/eadmundo/python-natty

Hãy thử nó, nó có thể làm nhiều hơn nữa!

Đã trả lời ngày 9 tháng 8 năm 2016 lúc 12:08Aug 9, 2016 at 12:08

Hướng dẫn how do i get last week monday date in python? - làm cách nào để nhận ngày thứ hai tuần trước trong python?

AkaakaAKA

4.4094 Huy hiệu vàng20 Huy hiệu bạc35 Huy hiệu Đồng4 gold badges20 silver badges35 bronze badges

today - datetime.timedelta(days=today.weekday())
0

Cung cấp cho bạn ngày hôm nay trong tuần, đếm 0 (Thứ Hai) đến 6 (Chủ nhật)

today - datetime.timedelta(days=today.weekday())
1

(7-D)%7 cho bạn ngày cho đến thứ Hai, hoặc để lại cho bạn bạn ở đâu nếu hôm nay là thứ Hai

Đã trả lời ngày 25 tháng 10 năm 2009 lúc 21:07Oct 25, 2009 at 21:07

foosionfoosionfoosion

7.40925 Huy hiệu vàng64 Huy hiệu bạc100 Huy hiệu Đồng25 gold badges64 silver badges100 bronze badges

Làm thế nào để tôi có được ngày tuần trước ở Python?

Trong mô -đun DateTime, bạn có thể làm một cái gì đó như thế này: a = date.today () - TimEdelTa (ngày = 1) và sau đó là A.WeekDay ().a = date. today() - timedelta(days=1) and then a. weekday() .

Làm thế nào để tôi có được ngày bắt đầu và kết thúc tuần trước trong Python?

Bạn có thể sử dụng datetime.timedelta cho điều đó.Nó có một đối số tuần tùy chọn mà bạn có thể đặt thành -1 để nó sẽ trừ bảy ngày kể từ ngày.Bạn cũng sẽ phải cung cấp ngày trong ngày của ngày hiện tại (và một ngày khác, thậm chí là ngày kể từ ngày thứ Hai là 0).datetime. timedelta for that. It has an optional weeks argument, which you can set to -1 so it will subtract seven days from the date . You will also have to subract the current date's weekday (and another one, to even the day since the Monday is 0 ).

Làm thế nào để bạn có được Thứ Hai Thứ Ba tại Python?

Sử dụng phương thức strftime () của mô -đun DateTime để lấy tên ngày bằng tiếng Anh bằng Python.Nó sử dụng một số chỉ thị tiêu chuẩn để thể hiện một DateTime ở định dạng chuỗi.%Một chỉ thị trả về tên đầy đủ của ngày trong tuần.Giống như, Thứ Hai, Thứ Ba.. It uses some standard directives to represent a datetime in a string format. The %A directive returns the full name of the weekday. Like, Monday, Tuesday.

Làm thế nào để bạn kiểm tra xem đó là thứ Hai ở Python?

Từ DateTime Nhập DateTime # Nếu hôm nay là Thứ Hai (0 = Mon, 1 = Tue, 2 = Wen ...) Nếu DateTime.Today ().: in ("không ...")if datetime. today(). weekday() == 0: print("Yes, Today is Monday") else: print("Nope...")