关于下班倒计时

137 阅读2分钟

摸鱼的时间写了一个下班倒计时的 python 脚本,供大家可以参考

# -*- coding: utf-8 -*-
from datetime import datetime,timedelta

def printCountDown(tag, now, year,month, day, hour, min, seconds):
    thatDay = datetime(year,month,day,hour,min,seconds)
    diff = (int)(thatDay.timestamp() - now.timestamp())
    
    seconds = diff 
    month = 0
    hour = 0
    min = 0
    day = 0
    if seconds > 60:
        min = int(seconds / 60)
        seconds = int(seconds % 60)
        
    if min > 60:
        hour = int(min / int(60))
        min = int(min % int(60))
        

    if hour > 24:
        day = int(hour / int(24))
        hour = int(hour % int(24))
        

    if day > 30:
        month = int(day / int(30))
        day = int(day % int(30))


    if month > 0:
        print("距离【{}】还有 {}个月{}天{}小时{}分".format(tag,month,day,hour,min))
    elif day > 0:
        print("距离【{}】还有 {}天{}小时{}分".format(tag,day,hour,min))
    elif hour > 0:
        print("距离【{}】还有 {}小时{}分".format(tag,hour,min))
    elif min > 0:
        print("距离【{}】还有 {}分钟".format(tag,min))  
    elif seconds >0:
        print("距离【{}】还有 {}秒".format(tag,seconds)) 
    else:
        print("【{}】已到".format(tag)) 
    pass

now = datetime.now()

print("温馨提示:\n")


off_minute = 35 
off_hour = 18 
salaryDay = 23

salaryDateTime = datetime(now.year, now.month, salaryDay, off_hour, off_minute, 0)

delta = salaryDateTime - now
if delta.days < 0:    # 过了发薪日,需要判断下个月的发薪日
    salaryMonth = now.month + 1
    salaryYear = now.year
    if salaryMonth > 12:
        salaryMonth %= 12
        salaryYear += 1
    printCountDown(tag="发工资", now=now, year=salaryYear, month=salaryMonth, day=salaryDay, hour=off_hour, min=off_minute, seconds=0)
else:
    printCountDown(tag="发工资", now=now, year=now.year, month=now.month, day=salaryDay, hour=off_hour, min=off_minute, seconds=0)

printCountDown(tag="下班铃声响", now=now, year=now.year, month=now.month, day=now.day, hour=off_hour, min=off_minute, seconds=0)
weekday = now.weekday()
if weekday > 4:
    fridayOffset = 6 - weekday + 5
else:
    fridayOffset = 4 - weekday
# 0 1 2 3 4 5 6
friday = now + timedelta(days = fridayOffset)
if fridayOffset < 5:
    printCountDown(tag="周五下班", now=now, year=friday.year, month=friday.month, day=friday.day, hour=18, min=off_minute, seconds=0)
printCountDown(tag="元旦", now=now, year=2024, month=1, day=1, hour=0, min=0, seconds=0)
printCountDown(tag="除夕", now=now, year=2024, month=2, day=8, hour=18, min=off_minute, seconds=0)

运行结果如下

温馨提示:

距离【发工资】还有 18天0小时35分
距离【下班铃声响】还有 35分钟
距离【周五下班】还有 3天0小时35分
距离【元旦】还有 26天6小时0分
距离【除夕】还有 2个月5天0小时35分

你们可以把目标时间改成自己公司的,摸鱼神器一枚