Tìm cách tận dụng >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
5 để có được ngày bắt đầu và kết thúc tuần trước, Chủ nhật đến thứ Bảy.Vì vậy, nếu đó là 8/12/13 hôm nay, tôi muốn xác định một hàm in: >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
6Làm thế nào để tôi viết về điều này? Chỉnh sửa: Được rồi, vì vậy dường như có một số câu hỏi về các trường hợp cạnh. Đối với các ngày thứ Bảy, tôi muốn cùng một tuần, đối với bất cứ điều gì khác, tôi muốn tuần dương lịch ngay trước ngày ____ 17. Hỏi ngày 13 tháng 8 năm 2013 lúc 4:11Aug 13, 2013 at 4:11 Foxfoxfox 14.2K20 Huy hiệu vàng55 Huy hiệu bạc84 Huy hiệu đồng20 gold badges55 silver badges84 bronze badges 7 DateTime.Date.Weekday Trả về >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
8 cho thứ Hai. Bạn cần phải điều chỉnh điều đó.Thử sau: >>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2013, 8, 13)
>>> idx = (today.weekday() + 1) % 7 # MON = 0, SUN = 6 -> SUN = 0 .. SAT = 6
>>> idx
2
>>> sun = today - datetime.timedelta(7+idx)
>>> sat = today - datetime.timedelta(7+idx-6)
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
Nếu bạn được phép sử dụng python-dateutil: >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
Jroddynamite 11.9k4 Huy hiệu vàng41 Huy hiệu bạc59 Huy hiệu đồng4 gold badges41 silver badges59 bronze badges Đã trả lời ngày 13 tháng 8 năm 2013 lúc 4:26Aug 13, 2013 at 4:26 Falsetrufalsetrufalsetru 346K60 Huy hiệu vàng691 Huy hiệu bạc614 Huy hiệu đồng60 gold badges691 silver badges614 bronze badges 5 Tôi đã tìm thấy câu trả lời tốt nhất từ đây làm việc tốt trong trường hợp của tôi thử cái này from datetime import datetime,timedelta
import time
def last_day(d, day_name):
days_of_week = ['sunday','monday','tuesday','wednesday',
'thursday','friday','saturday']
target_day = days_of_week.index(day_name.lower())
delta_day = target_day - d.isoweekday()
if delta_day >= 0: delta_day -= 7 # go back 7 days
return d + timedelta(days=delta_day)
Đã trả lời ngày 7 tháng 11 năm 2013 lúc 11:47Nov 7, 2013
at 11:47 Kartheekkartheekkartheek 6.1743 huy hiệu vàng41 Huy hiệu bạc41 Huy hiệu đồng3 gold
badges41 silver badges41 bronze badges 2 from datetime import date
def satandsun(input):
d = input.toordinal()
last = d - 6
sunday = last - (last % 7)
saturday = sunday + 6
print date.fromordinal(sunday)
print date.fromordinal(saturday)
Lưu ý rằng điều này dường như tồn tại tất cả các trường hợp của bạn: >>> satandsun(date(2013, 8, 10))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 11))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 12))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 13))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 14))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 15))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 16))
2013-08-04
2013-08-10
>>> satandsun(date(2013, 8, 17))
2013-08-11
2013-08-17
Đã trả lời ngày 13 tháng 8 năm 2013 lúc 4:35Aug 13, 2013 at 4:35 Jasonjasonjason Phù thủy vàng 232K33419 Huy hiệu bạc521 Huy hiệu đồng33 gold badges419 silver badges521 bronze badges 0 import datetime
d = datetime.datetime.today()
sat_offset = (d.weekday() - 5) % 7
saturday = d - datetime.timedelta(days=sat_offset)
print("Last Saturday was on", saturday)
sun_offset = (d.weekday() - 6) % 7
sunday = d - datetime.timedelta(days=sun_offset)
print("Last Sunday was on", sunday)
Đã trả lời ngày 24 tháng 10 năm 2018 lúc 11:38Oct 24, 2018
at 11:38 >>> today = date.today().toordinal()
>>> lastWeek = today-7
>>> sunday = lastWeek - (lastWeek % 7)
>>> saturday = sunday + 6
>>> print "Last Sunday was %s and last Saturday was %s" % (date.fromordinal(sunday), date.fromordinal(saturday))
Last Sunday was 2013-08-04 and last Saturday was 2013-08-10
Đã trả lời ngày 13 tháng 8 năm 2013 lúc 4:27Aug 13, 2013 at 4:27 RobᵩrobᵩRobᵩ 158K17 Huy hiệu vàng228 Huy hiệu bạc 301 Huy hiệu đồng17 gold badges228 silver badges301 bronze badges 2 Khi tôi đối phó với điều này, tôi đã đi kèm với giải pháp này: from datetime import datetime, timedelta
def prior_week_end():
return datetime.now() - timedelta(days=((datetime.now().isoweekday() + 1) % 7))
def prior_week_start():
return prior_week_end() - timedelta(days=6)
Vì vậy, OP có thể sử dụng nó như: 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(prior_week_start(), prior_week_end())
Đã trả lời ngày 7 tháng 8 năm 2018 lúc 7:48Aug 7, 2018 at 7:48 Jozojozojozo 3.6721 Huy hiệu vàng24 Huy hiệu bạc29 Huy hiệu đồng1 gold badge24 silver badges29 bronze badges Mã sau làm việc cho tôi: today = datetime.date.today()
last_sunday_offset = today.weekday() + 1 # convert day format mon-sun=0-6 => sun-sat=0-6
last_sunday = today - datetime.timedelta(days=last_sunday_offset)
Lưu ý: Ở trên tôi đã lấy ngày trong tuần bình thường (0 cho thứ Hai) nhưng vào Thứ Hai ISOWEEKDAY sẽ là 1. Để biết thêm chi tiết, bạn có thể xem ra ngoài trong tuần () và iSoweekDay () Phương thức của Python tích hợp gói DateTime.py:weekday() and isoweekday() method of python
built-in package datetime.py: >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
0 Đã trả lời ngày 16 tháng 4 năm 2021 lúc 11:04Apr 16, 2021 at 11:04 Đây là những gì tôi đã làm: >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
1Vì vậy, bây giờ tôi có thể chạy .. >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
2hoặc bất kỳ ngày nào trong tuần >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
3 Đã trả lời ngày 13 tháng 2 lúc 18:21Feb 13 at 18:21 Greggregreg 334 huy hiệu đồng4 bronze badges Cách đơn giản nhất là: >>> import datetime
>>> from dateutil import relativedelta
>>> today = datetime.datetime.now()
>>> start = today - datetime.timedelta((today.weekday() + 1) % 7)
>>> sat = start + relativedelta.relativedelta(weekday=relativedelta.SA(-1))
>>> sun = sat + relativedelta.relativedelta(weekday=relativedelta.SU(-1))
>>> 'Last Sunday was {:%m/%d/%Y} and last Saturday was {:%m/%d/%Y}'.format(sun, sat)
'Last Sunday was 08/04/2013 and last Saturday was 08/10/2013'
4Hôm nay được đặt thành UTC, hãy thoải mái sử dụng cách ưa thích của bạn. Đã trả lời ngày 12 tháng 4 lúc 12:06Apr 12 at 12:06
|