Tôi đang cố gắng tìm ngày làm việc cuối cùng trong tháng. Tôi đã viết mã dưới đây cho điều đó và nó hoạt động tốt nhưng tôi đã tự hỏi liệu có cách làm sạch hơn không?
from datetime import date,timedelta
import datetime
import calendar
today=datetime.date.today[]
last = today.replace[day=calendar.monthrange[today.year,today.month][1]]
if last.weekday[] int:
return max[calendar.monthcalendar[year, month][-1:][0][:5]]
Xtheking
5652 Huy hiệu vàng8 Huy hiệu bạc29 Huy hiệu đồng2 gold badges8 silver badges29 bronze badges
Đã trả lời ngày 15 tháng 6 năm 2020 lúc 15:53Jun 15, 2020 at 15:53
VBOBCATVBOBCATVBobCat
2.3162 Huy hiệu vàng26 Huy hiệu bạc49 Huy hiệu đồng2 gold badges26 silver badges49 bronze badges
3
Tôi sử dụng điều này cho ngày làm việc đầu tiên trong tháng nhưng nó cũng có thể được sử dụng cho ngày làm việc cuối cùng trong tháng:
import time
import datetime
from pandas.tseries.holiday import USFederalHolidayCalendar
from pandas.tseries.offsets import CustomBusinessDay
from dateutil.relativedelta import relativedelta
#Create dates needed to be entered as parameters
today = datetime.date.today[]
first = today.replace[day=1]
#End of the Prior Month
eopm = first - datetime.timedelta[days=1]
eopm = eopm.strftime["%Y%m%d"]
#Create first business day of current month date
us_bd = CustomBusinessDay[calendar=USFederalHolidayCalendar[]]
focm = first
nxtMo = today + relativedelta[months=+1]
fonm = nxtMo.replace[day=1]
eocm = fonm - datetime.timedelta[days=1]
first_bd = pd.DatetimeIndex[start = focm, end = eocm, freq= us_bd]
first_bd = first_bd.strftime["%Y%m%d"]
#First Business Day of the Month
first_bd = first_bd[0]
#Last Business Day of the Month
lst_day = len[first_bd]-1
last_bd = first_bd[lst_day]
Tôi đã để lại một số mã trong đó không cần thiết cho ngày làm việc cuối cùng của tháng hiện tại, nhưng có thể hữu ích cho ai đó.
Đã trả lời ngày 4 tháng 1 năm 2017 lúc 15:48Jan 4, 2017 at 15:48
d84_n1nj4d84_n1nj4d84_n1nj4
1.6436 huy hiệu vàng23 Huy hiệu bạc38 Huy hiệu đồng6 gold badges23 silver badges38 bronze badges
Với Rollforward [D], bạn sẽ bỏ qua vào tháng tới nếu ngày qua ngày làm việc cuối cùng của tháng hiện tại, vì vậy dưới đây có thể an toàn hơn cho bất kỳ ngày nào trong tháng:
from datetime import date
import pandas as pd
d = date[2011, 12, 31] # a caturday
pd.bdate_range[end=pd.offsets.MonthEnd[].rollforward[d], periods=1]
pd.offsets.BMonthEnd[].rollforward[d]
Đã trả lời ngày 2 tháng 7 năm 2020 lúc 10:34Jul 2, 2020 at 10:34
zephyr707zephyr707zephyr707
Huy hiệu đồng 1431 Bạc7 Huy hiệu Đồng1 silver badge7 bronze badges
Tôi cần một cái gì đó có thể đọc được trực quan và đã chọn những điều sau đây:
from datetime import datetime, timedelta
import pandas as pd
def isMonthLastBusinessDay[date]:
lastDayOfMonth = date + pd.offsets.MonthEnd[0]
isFriday = date.weekday[] == 4
if [date.weekday[] < 5 and lastDayOfMonth == date] or [isFriday and lastDayOfMonth == date+timedelta[days=1]] or [isFriday and lastDayOfMonth == date+timedelta[days=2]]:
return True
else:
return False
Đã trả lời ngày 12 tháng 5 năm 2021 lúc 12:13May 12, 2021 at 12:13
NHBOENHBOEnhboe
Huy hiệu 111 Đồng1 bronze badge