下面是一个示例代码,可以按照澳大利亚时区的月底工作日顺序来排序日期列表:
from datetime import date, timedelta
# 定义一个函数,用于判断某个日期是否是工作日
def is_workday(date):
if date.weekday() < 5: # 0-4 代表周一到周五
return True
return False
# 定义一个函数,用于获取下一个工作日
def get_next_workday(date):
next_day = date + timedelta(days=1)
while not is_workday(next_day):
next_day += timedelta(days=1)
return next_day
# 定义一个函数,用于按照工作日顺序排序日期列表
def sort_dates(dates):
sorted_dates = sorted(dates)
return sorted_dates[::-1]
# 获取当前日期
today = date.today()
# 创建一个空列表,用于存储当月的工作日日期
workdays = []
# 获取当月最后一天的日期
last_day = date(today.year, today.month+1, 1) - timedelta(days=1)
# 从最后一天开始往前遍历,获取当月的工作日
current_day = last_day
while current_day >= today:
if is_workday(current_day):
workdays.append(current_day)
current_day = get_next_workday(current_day - timedelta(days=1))
# 按照工作日顺序排序日期列表
sorted_workdays = sort_dates(workdays)
# 打印排序后的日期列表
for workday in sorted_workdays:
print(workday.strftime('%Y-%m-%d'))
这段代码首先定义了一个is_workday
函数,用于判断某个日期是否是工作日。然后定义了一个get_next_workday
函数,用于获取下一个工作日的日期。接下来,定义了一个sort_dates
函数,用于按照工作日顺序排序日期列表。
在主程序中,首先获取当前日期,然后创建一个空列表workdays
,用于存储当月的工作日日期。接着,获取当月最后一天的日期last_day
。然后,从最后一天开始往前遍历,判断每一天是否是工作日,如果是,则将其加入到workdays
列表中。最后,调用sort_dates
函数对workdays
列表进行排序,并打印排序后的日期列表。