Cho một ngày cụ thể, nói 2011-07-02, làm cách nào để tìm ngày của Thứ Hai tới (hoặc bất kỳ ngày trong tuần nào cho vấn đề đó) sau ngày đó?Tìm ngày cho Thứ Hai đầu tiên sau một ngày nhất định
Trả lời
import datetime
def next_weekday(d, weekday):
days_ahead = weekday - d.weekday()
if days_ahead <= 0: # Target day already happened this week
days_ahead += 7
return d + datetime.timedelta(days_ahead)
d = datetime.date(2011, 7, 2)
next_monday = next_weekday(d, 0) # 0 = Monday, 1=Tuesday, 2=Wednesday...
print(next_monday)
Hãy thử
>>> dt = datetime(2011, 7, 2)
>>> dt + timedelta(days=(7 - dt.weekday()))
datetime.datetime(2011, 7, 4, 0, 0)
sử dụng, rằng thứ hai tiếp theo là 7 ngày sau khi một thứ hai, 6 ngày sau khi một thứ ba, và như vậy, và cũng có thể sử dụng, đó là Python của datetime
loại báo cáo thứ hai là 0
, ..., chủ nhật là 6
.
Thú vị là - khi tôi cố gắng tìm Chủ nhật sắp tới sau ngày giờ (2013, 1, 1) với " datetime (2013, 1 , 1) + timedelta (ngày = (7 - datetime (2013, 1, 1) .weekday())) ", tôi nhận được" datetime.datetime (2013, 1, 7, 0, 0) ", là thứ hai . – fixxxer
@fixxxer - Như nó nói trong câu trả lời: mã sử dụng một vài thuộc tính của API 'datetime' theo cách, mà sẽ chỉ hoạt động, nếu bạn đang tìm kiếm thứ hai. Mã được cung cấp bởi 'phihag' tổng quát hơn và có thể tìm thấy bất kỳ ngày nào trong tuần sắp tới. – Dirk
Bạn có nghĩ rằng việc sử dụng 6 thay vì 7 trong timedelta sẽ giúp ích? – fixxxer
Bạn có thể bắt đầu thêm một ngày vào đối tượng ngày và dừng khi thứ hai.
>>> d = datetime.date(2011, 7, 2)
>>> while d.weekday() != 0: #0 for monday
... d += datetime.timedelta(days=1)
...
>>> d
datetime.date(2011, 7, 4)
này sẽ cung cấp cho các đầu tiên vào thứ hai tới ngày sau khi đưa ra:
import datetime
def get_next_monday(year, month, day):
date0 = datetime.date(year, month, day)
next_monday = date0 + datetime.timedelta(7 - date0.weekday() or 7)
return next_monday
print get_next_monday(2011, 7, 2)
print get_next_monday(2015, 8, 31)
print get_next_monday(2015, 9, 1)
2011-07-04
2015-09-07
2015-09-07
qua danh sách bao quát?
from datetime import *
[datetime.today()+timedelta(days=x) for x in range(0,7) if (datetime.today()+timedelta(days=x)).weekday() % 7 == 0]
(0 at the end is for next monday, returns current date when run on monday)
weekday = 0 ## Monday
dt = datetime.datetime.now().replace(hour=0, minute=0, second=0) ## or any specific date
days_remaining = (weekday - dt.weekday() - 1) % 7 + 1
next_dt = dt + datetime.timedelta(days_remaining)
Dưới đây là một lựa chọn ngắn gọn và tổng quát để câu trả lời hơi nặng ở trên.
# Returns the date of the next given weekday after
# the given date. For example, the date of next Monday.
onDay = lambda date, day: date + datetime.timedelta(days=(day-date.weekday()+7)%7)
Câu trả lời này đến quá muộn để thu thập upvotes, nhưng nó là yêu thích của tôi. – ASalazar
Vô cùng sạch sẽ, bạn có phiếu bầu của tôi. – Liquidgenius
Một giải pháp đơn giản khác là sử dụng bù lệch con gấu trúc.
Tôi thấy nó rất hữu ích và mạnh mẽ khi chơi cùng với ngày tháng.
- Nếu bạn muốn chủ nhật đầu tiên chỉ sửa đổi tần số thành freq = 'W-SUN'.
- Nếu bạn muốn một vài chủ nhật tiếp theo, hãy thay đổi offsets.Day (ngày).
- Sử dụng bù trừ gấu trúc cho phép bạn bỏ qua ngày lễ, chỉ hoạt động với Ngày làm việc và hơn thế nữa.
Bạn cũng có thể áp dụng phương pháp này dễ dàng trên toàn bộ DataFrame bằng cách áp dụng phương pháp.
# Getting the closest monday from a given date
closest_monday = pd.date_range(start=date, end=date + offsets.Day(6), freq='W-MON')[0]
# Adding a 'ClosestMonday' column with the closest monday for each row in a pandas df using apply
# Require you to have a 'Date' column in your df
def get_closest_monday(row):
return pd.date_range(start=row.Date, end=row.Date + offsets.Day(6), freq='W-MON')[0]
df['ClosestMonday'] = df.apply(lambda row: get_closest_monday(row), axis=1)
import datetime
d = datetime.date(2011, 7, 2)
while d.weekday() != 0:
d += datetime.timedelta(1)
- 1. Nhận ngày Thứ Hai đầu tiên của tuần?
- 2. tìm ngày bắt đầu (Thứ Hai) của tuần hiện tại
- 3. Tìm ngày đầu tiên của lịch
- 4. Tìm ngày của Thứ Hai bằng Python
- 5. Ngày hạn chế ngày tháng trong ngày đầu tiên trong trường ngày đầu tiên
- 6. Thay đổi ngày bắt đầu trong tuần từ 'thứ hai' thành 'ngày thứ ba' trong Php
- 7. Tìm ngày cho một số tuần nhất định
- 8. NSDate cho ngày đầu tiên của tháng
- 9. Cách tìm ngày tháng giữa hai ngày được chỉ định?
- 10. java nhận ngày đầu tiên và ngày cuối cùng của tháng đã cho và năm nhất định
- 11. Cách xác định ngày trong tuần đầu tiên trên iOS?
- 12. Tìm ngày sớm nhất trong 3 ngày
- 13. Tìm ngày bị thiếu trong một phạm vi nhất định
- 14. Cách tìm ngày đầu tiên của tháng tiếp theo và các ngày còn lại cho đến ngày này với PHP
- 15. Tìm ngày đầu tiên của tháng trước trong javascript
- 16. Cách kiểm tra hai ngày giờ cho cùng một ngày?
- 17. Tìm Ngày đầu tiên của tuần qua php
- 18. Đầu tiên [Thứ Hai] của tháng, Thứ Hai [Thứ Năm] của tháng, v.v. Delphi
- 19. Làm thế nào để tìm ngày trong tuần gần nhất cho một ngày tùy ý?
- 20. Bắt tất cả các ngày cho các ngày thứ Hai và thứ Ba cho năm tiếp theo
- 21. Ngày đầu tiên của năm nay
- 22. Tạo ngày giữa hai ngày
- 23. Làm cách nào để làm cho GWT DatePicker sử dụng thứ Hai là ngày đầu tiên của tuần?
- 24. Làm thế nào để có được ngày đầu tiên của một số tuần nhất định trong PHP (đa nền tảng)?
- 25. Chuỗi sửa đổi ngày giờ cho ngày đầu tiên của năm hiện tại
- 26. Trước ngày Thứ Hai & Trước ngày chủ nhật dựa trên ngày nay hẹn hò với
- 27. Cách đơn giản nhất để tạo ngày tháng là ngày đầu tiên của tháng, được đưa ra ngày khác
- 28. Tìm số ngày trong tuần/cuối tuần trong một phạm vi ngày nhất định
- 29. Làm cách nào để tìm ngày đầu tiên của tuần mà một ngày cụ thể thuộc về?
- 30. Tìm tuần này Thứ Hai
http://docs.python.org/library/datetime.html#datetime.date.weekday –