Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

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

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

Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

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'

Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

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

Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

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

Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

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

Hướng dẫn python get last saturday - trăn có được thứ bảy tuần trước

Đâ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'
1

Vì 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'
2

hoặ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'
4

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