
一、五一劳动节的由来
各位技术圈的朋友们,五一劳动节来临,在此先祝大家五一快乐!在这个属于劳动者的节日里,让我们一同回顾五一劳动节的由来,了解它背后的意义,同时也来看看今年的放假安排,为即将到来的假期做好规划。
五一国际劳动节,也被亲切地称为“五一节”“劳动节”,它是全球劳动者共同的盛大节日,每年的 5 月 1 日,世界各地都会以各种方式庆祝这个特殊的日子。这一天,是对所有工人和劳动者的致敬与赞美,是他们用勤劳的双手和智慧的头脑,推动着社会的进步与发展。
追溯五一节的起源,要回到 19 世纪末。当时,欧美的工人阶级长期处于恶劣的劳动环境中,工作时间长、劳动强度大、待遇却十分微薄。为了改变这种状况,争取更好的劳动条件和待遇,工人们经常举行抗议活动。
1891 年 5 月 1 日,美国的工会发起了一场大规模的抗议行动,成千上万的工人涌上芝加哥市的街头,举行了声势浩大的游行示威,他们高呼着口号,要求实行 8 小时工作制。
然而,这场原本和平的示威活动却不幸演变成了暴力事件,数名工人和警察在冲突中丧生。这一悲剧性的事件不仅没有让工人们退缩,反而激发了全球工人们的斗志和团结精神。
为了纪念这次事件,也为了推动全球工人阶级的斗争,国际社会于 1894 年将 5 月 1 日正式定为国际劳动节,以此缅怀那些为工人事业献出自己的英雄们。
随着时间的推移,五一节逐渐在全球众多国家得到认可和庆祝,它不再仅仅是一个纪念性的节日,更演变成了丰富多彩、充满欢乐的庆祝活动。
在这一天,人们会举行各种游行、集会,表达对劳动者的感谢和敬意;也有很多人会选择出游,放松身心,享受美好的假期时光。
二、今年五一节放假调休制度
根据国务院办公厅发布的通知,今年五一节放假调休制度如下:2025 年 5 月 1 日(星期四)至 5 月 5 日(星期一)放假调休,一共5 天。大家可以提前合理安排好工作和生活,做好出行计划,同时也要注意安全,文明出游,度过一个欢乐、祥和的节日假期。
三、彩蛋:Python 一键计算五一加班费
如果你自愿—or 被动—选择在 5 月 1日 ~ 5 月5 日加班,别忘了一键计算一下自己的钱包收入(calc 脚本)。
# -*- coding: utf-8 -*-
import datetime
import sys
# --- 常量定义 ---
MONTHLY_WORKING_DAYS = 21.75 # 法定月计薪天数
HOURS_PER_DAY = 8 # 每日标准工作小时数
STATUTORY_RATE = 3.0 # 法定节假日加班费倍率 (300%)
REST_DAY_RATE = 2.0 # 休息日/调休加班费倍率 (200%)
def get_valid_float_input(prompt):
"""获取有效的非负浮点数输入"""
while True:
try:
value = float(input(prompt))
if value < 0:
print("错误:输入值不能为负数,请重新输入。")
else:
return value
except ValueError:
print("错误:请输入有效的数字。")
def get_valid_date_input(prompt):
"""获取有效的日期输入 (YYYY-MM-DD)"""
while True:
date_str = input(prompt)
try:
date_obj = datetime.datetime.strptime(date_str, '%Y-%m-%d').date()
return date_obj
except ValueError:
print("错误:日期格式不正确,请输入 YYYY-MM-DD 格式,例如 2025-05-01。")
def calculate_2025_may_day_overtime():
"""计算2025年五一劳动节加班费"""
print("--- 2025年五一劳动节加班费计算器 ---")
print("=" * 40)
print("⚠️ 重要提醒:")
print("您需要知道【2025年五一假期的官方安排】才能准确区分:")
print(" - 哪些日期是【法定节假日】(通常仅5月1日,享受3倍工资)")
print(" - 哪些日期是【调休/休息日】(享受2倍工资,除非安排补休)")
print("请在获得官方通知后使用本工具。")
print("=" * 40)
# --- 1. 获取工资基数 ---
monthly_salary_base = get_valid_float_input("请输入您的月工资计算基数(元,通常是基本工资或合同约定工资): ")
# --- 2. 获取2025年五一假期范围 ---
print("\n请输入2025年五一假期的【官方】起止日期:")
while True:
start_date = get_valid_date_input("假期开始日期 (YYYY-MM-DD): ")
# 简单年份校验
if start_date.year != 2025:
print("错误:请输入2025年的日期。")
continue
end_date = get_valid_date_input("假期结束日期 (YYYY-MM-DD): ")
if end_date.year != 2025:
print("错误:请输入2025年的日期。")
continue
if start_date > end_date:
print("错误:开始日期不能晚于结束日期,请重新输入。")
else:
# 限制假期长度,防止意外输入过长日期范围(可选)
if (end_date - start_date).days > 15: # 假设假期不会超过16天
print("警告:您输入的假期范围较长,请确认无误。")
break
# --- 3. 逐日获取加班信息 ---
total_statutory_hours = 0.0
total_rest_day_hours = 0.0
overtime_details = [] # 记录详情 (可选)
print("\n--- 请逐日输入加班情况 ---")
current_date = start_date
while current_date <= end_date:
date_str_display = current_date.strftime('%Y-%m-%d (%A)') # %A 显示星期几
print(f"\n日期: {date_str_display}")
while True:
worked = input(" 您在这一天加班了吗? (y/n): ").lower()
if worked in ['y', 'n']:
break
else:
print(" 请输入 'y' 或 'n'.")
if worked == 'y':
hours = get_valid_float_input(f" 请输入 {date_str_display} 的加班小时数: ")
while True:
day_type = input(" 这一天是【法定节假日(S)】还是【调休/休息日(R)】? (请输入 S 或 R): ").upper()
if day_type == 'S':
total_statutory_hours += hours
overtime_details.append({'date': date_str_display, 'hours': hours, 'type': '法定节假日'})
break
elif day_type == 'R':
total_rest_day_hours += hours
overtime_details.append({'date': date_str_display, 'hours': hours, 'type': '调休/休息日'})
break
else:
print(" 请输入 'S' (法定节假日) 或 'R' (调休/休息日).")
else:
overtime_details.append({'date': date_str_display, 'hours': 0, 'type': '未加班'})
current_date += datetime.timedelta(days=1) # 进入下一天
# --- 4. 计算小时工资 ---
try:
daily_wage = monthly_salary_base / MONTHLY_WORKING_DAYS
hourly_wage = daily_wage / HOURS_PER_DAY
except ZeroDivisionError:
print("\n错误:无法计算时薪,月计薪天数或日工作小时数不能为零。")
sys.exit(1)
if monthly_salary_base <= 0: # 避免时薪为0或负数
hourly_wage = 0
# --- 5. 计算加班费 ---
statutory_holiday_overtime_pay = total_statutory_hours * hourly_wage * STATUTORY_RATE
adjusted_rest_day_overtime_pay = total_rest_day_hours * hourly_wage * REST_DAY_RATE
total_overtime_pay = statutory_holiday_overtime_pay + adjusted_rest_day_overtime_pay
# --- 6. 输出结果 ---
print("\n" + "=" * 40)
print(" 2025年五一加班费计算结果")
print("=" * 40)
print(f"您的月工资计算基数: {monthly_salary_base:.2f} 元")
print(f"计算出的小时工资约为: {hourly_wage:.2f} 元/小时")
print("-" * 40)
print("加班详情:")
if not any(d['hours'] > 0 for d in overtime_details):
print(" 无加班记录。")
else:
for detail in overtime_details:
if detail['hours'] > 0:
print(f" - {detail['date']}: {detail['hours']:.1f} 小时 ({detail['type']})")
print("-" * 40)
print("加班费汇总:")
print(f"法定节假日 总加班: {total_statutory_hours:.1f} 小时")
print(f" - 加班费: {statutory_holiday_overtime_pay:.2f} 元 (按 {STATUTORY_RATE*100:.0f}% 计算)")
print("-" * 20)
print(f"调休/休息日 总加班: {total_rest_day_hours:.1f} 小时")
print(f" - 加班费: {adjusted_rest_day_overtime_pay:.2f} 元 (按 {REST_DAY_RATE*100:.0f}% 计算)")
print("-" * 40)
print(f"【2025五一假期总加班费合计】: {total_overtime_pay:.2f} 元")
print("=" * 40)
# --- 7. 重要提示 ---
print("\n** 再次提醒 **")
print("1. 此结果为估算值,基于您输入的日期分类和小时数。")
print("2. **请务必根据2025年官方公布的五一放假安排来核对法定节假日和调休/休息日的划分。**")
print("3. 具体金额请以公司人力资源部门或财务部门的核算为准。")
print("4. 加班费计算基数可能因公司政策或地方规定有所不同。")
print("5. 休息日加班,公司可能优先安排补休,请确认公司政策。")
# --- 运行计算函数 ---
if __name__ == "__main__":
calculate_2025_may_day_overtime()
# 在脚本末尾添加,防止窗口直接关闭
input("\n计算完成,按 Enter 键退出...")
仅为演示示例,实际以公司政策为准:
C:\Users\用户名\PycharmProjects\my_python\.venv\Scripts\python.exe C:\Users\用户\PycharmProjects\May_Day_holiday.py
--- 2025年五一劳动节加班费计算器 ---
========================================
⚠️ 重要提醒:
您需要知道【2025年五一假期的官方安排】才能准确区分:
- 哪些日期是【法定节假日】(通常仅5月1日,享受3倍工资)
- 哪些日期是【调休/休息日】(享受2倍工资,除非安排补休)
请在获得官方通知后使用本工具。
========================================
请输入您的月工资计算基数(元,通常是基本工资或合同约定工资): 20000
请输入2025年五一假期的【官方】起止日期:
假期开始日期 (YYYY-MM-DD): 2025-05-01
假期结束日期 (YYYY-MM-DD): 2025-05-05
--- 请逐日输入加班情况 ---
日期: 2025-05-01 (Thursday)
您在这一天加班了吗? (y/n): y
请输入 2025-05-01 (Thursday) 的加班小时数: 8
这一天是【法定节假日(S)】还是【调休/休息日(R)】? (请输入 S 或 R): S
日期: 2025-05-02 (Friday)
您在这一天加班了吗? (y/n): y
请输入 2025-05-02 (Friday) 的加班小时数: 8
这一天是【法定节假日(S)】还是【调休/休息日(R)】? (请输入 S 或 R): R
日期: 2025-05-03 (Saturday)
您在这一天加班了吗? (y/n): n
日期: 2025-05-04 (Sunday)
您在这一天加班了吗? (y/n): n
日期: 2025-05-05 (Monday)
您在这一天加班了吗? (y/n): n
========================================
2025年五一加班费计算结果
========================================
您的月工资计算基数: 20000.00 元
计算出的小时工资约为: 114.94 元/小时
----------------------------------------
加班详情:
- 2025-05-01 (Thursday): 8.0 小时 (法定节假日)
- 2025-05-02 (Friday): 8.0 小时 (调休/休息日)
----------------------------------------
加班费汇总:
法定节假日 总加班: 8.0 小时
- 加班费: 2758.62 元 (按 300% 计算)
--------------------
调休/休息日 总加班: 8.0 小时
- 加班费: 1839.08 元 (按 200% 计算)
----------------------------------------
【2025五一假期总加班费合计】: 4597.70 元
========================================
** 再次提醒 **
1. 此结果为估算值,基于您输入的日期分类和小时数。
2. **请务必根据2025年官方公布的五一放假安排来核对法定节假日和调休/休息日的划分。**
3. 具体金额请以公司人力资源部门或财务部门的核算为准。
4. 加班费计算基数可能因公司政策或地方规定有所不同。
5. 休息日加班,公司可能优先安排补休,请确认公司政策。
计算完成,按 Enter 键退出...
作为技术人,我们每天都在代码的世界里耕耘,用一行行代码构建着美好的未来。在这个五一劳动节,希望大家能暂时放下手中的工作,好好休息一下。无论是在家陪伴家人,还是出门感受大自然的美好,都要尽情享受属于自己的美好时光。
四、给技术人的特别祝福
在这个属于你们的节日里:
- 愿你们的代码0 error 0 warning
- 愿产品经理的需求文档像README一样清晰
- 愿线上系统如瑞士钟表般稳定
- 最重要的是——这5天假期,请暂时忘记技术栈,让大脑GC一下!
附上程序员专用祝福彩蛋:
print("Happy Labor Day!".center(50,'❤️'))
# 输出结果:❤️❤️❤️❤️Happy Labor Day!❤️❤️❤️❤️
结语
最后,再次感谢每一位辛勤工作的朋友,是你们的不懈付出,为社会的进步和发展做出了重要贡献。愿大家的工作生活更加愉快、健康和充实,平安健康,再接再厉,不断追求更好的自己!