Tôi cần biết làm cách nào để tính ngày của ngày thứ Sáu tới? Tôi mới sử dụng Python :)Làm thế nào để tính toán thứ sáu tới trong Python?
Cảm ơn!
Tôi cần biết làm cách nào để tính ngày của ngày thứ Sáu tới? Tôi mới sử dụng Python :)Làm thế nào để tính toán thứ sáu tới trong Python?
Cảm ơn!
Để bắt đầu, bạn sẽ cần datetime
thư viện:
import datetime
Sau đó, bạn cần một ngày bắt đầu; đó là, hôm nay.
d = datetime.date.today()
Bắt đầu từ đó, bạn sẽ muốn tiếp tục cho đến khi bạn đạt đến thứ Sáu. Phương pháp date.weekday
đại diện từ Thứ Hai đến Chủ Nhật là 0 đến 6, vì vậy:
while d.weekday() != 4:
Nếu ngày hiện tại không phải là thứ Sáu, bạn sẽ có thêm một ngày, cùng một lúc. Để thêm khoảng thời gian vào đối tượng date
, bạn sử dụng đối tượng timedelta
.
d += datetime.timedelta(1)
Đặt nó tất cả cùng nhau, và d
cuối cùng sẽ chứa một đối tượng date
đại diện cho thứ sáu tới. Lưu ý rằng nếu hôm nay là thứ Sáu, mã này sẽ sản xuất hôm nay; bạn có thể tinh chỉnh nó nếu bạn cần nó để sản xuất vào thứ sáu tới.
Cảm ơn bạn! Rất hữu ích – KennyPowers
@rolikoff FYI, khi bạn nhận được câu trả lời giúp bạn, bạn có thể chấp nhận câu trả lời bằng cách nhấp vào dấu kiểm (xem [faq # howtoask]). – Taymon
Bình chọn xuống vì câu trả lời của @ ugoren (với thay đổi được đề xuất trong nhận xét) hoàn toàn tốt hơn –
Một cải tiến nhất định trên @ taymon`s câu trả lời:
today = datetime.date.today()
friday = today + datetime.timedelta((4-today.weekday()) % 7)
4 là ngày trong tuần hôm thứ Sáu (0 dựa, kể từ Thứ Hai).
((4-today.weekday()) % 7)
là số ngày cho đến thứ sáu tới (%
luôn không âm).
Sau khi xem câu trả lời của @ ubuntu, tôi nên thêm hai điều:
1. Tôi không chắc liệu Friday = 4 có đúng không. Một số người bắt đầu tuần của họ vào chủ nhật.
2. Vào thứ Sáu, mã này trả về cùng ngày. Để tiếp theo, hãy sử dụng (3-today.weekday())%7+1
. Chỉ cần chuyển đổi x%n
cũ sang ((x-1)%n)+1
.
Thứ sáu luôn là 4 khi sử dụng ['weekday()'] (http://docs.python.org/library/datetime.html#datetime .date.weekday). Phương thức ['isoweekday()'] (http://docs.python.org/library/datetime.html#datetime.date.isoweekday) cho thứ Sáu là 5, vì nó xử lý từ thứ Hai đến Chủ Nhật từ 1 đến 7. – Taymon
Bạn có thể sử dụng 'calendar.FRIDAY' thay vì' 4' nếu bạn không nhớ thêm 'calendar calendar'. – lumbric
Đây là cách bạn có thể làm điều đó bằng dateutil: (. Đối số days = 1
đảm bảo rằng "thứ sáu tới" là không giống như today
trong trường hợp today
sẽ xảy ra là thứ sáu)
import datetime as DT
import dateutil.relativedelta as REL
today = DT.date.today()
print(today)
# 2012-01-10
rd = REL.relativedelta(days=1, weekday=REL.FR)
next_friday = today + rd
print(next_friday)
# 2012-01-13
Đây có phải là bài tập về nhà không? –
Không :) chỉ muốn biết cách tốt nhất để làm điều đó. Tôi biết có điều gì đó giống như dateutil có thể giúp làm điều đó, nhưng không chắc nó có đáng để sử dụng nó hay không – KennyPowers
Tại sao mọi người luôn hỏi liệu đó có phải là bài tập ở nhà không? Nó lặp đi lặp lại; nó đã tạo ra sự khác biệt gì? – HexTree