当前位置: 首页 > news >正文

安全无事故连续天数计算,python 时间工具的高效利用

安全天数计算,数据系统时间直取,安全标准高效便捷好用。


  笔记模板由python脚本于2025-03-17 23:50:52创建,本篇笔记适合对python时间工具有研究欲的coder翻阅。


【学习的细节是欢悦的历程】

  博客的核心价值在于输出思考与经验,而不仅仅是知识的简单复述


  • Python官网
      这里,才 python 前沿。英文原版,原汁原味,才是寻根溯源的正统。😎
    地址:https://www.python.org/

  • Free
      大咖免费“圣级”秘笈《 python 完全自学教程》不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/



  自学并不是什么神秘的东西,一个人一辈子自学的时间,总是比在学校学习的时间长;没有老师的时候总是比有老师的时候多。
            —— 华罗庚


---== 彰显C位 ==---

  1. ,可以在评论区书写任何想法
  2. (我将在看到的第一时间回应)

  3. (预置空地)
---== 彰显C位 ==---

我的座右铭图片,上书中文“等风来,不如追风去……”



数据系统时间直取
安全天数计算
安全标准高效便捷好用



本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/146329331

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 安全天数计算
    • 1、代码先睹
    • 2、算法解析
      • 2.1 Title
    • 3、完整源码(Python)


◆ 安全天数计算


1、代码先睹


  • 代码效果截屏图片
    在这里插入图片描述

完整代码

#/usr/bin/env python3
from datetime import datetime,     timedelta
import calendar


'''

filename: yday.py

功能函数小练习:

指定月份公历月历打印、
自定义九位时间数组(year, month, day, hour, minute, second, week, wday, yday)、
连续安全日计算(上次安全事故到指定日期天数)

'''


# Base Var #
blue = '\033[34m'
lightgreen = '\033[32;1m'
gray = '\033[37;2m'
resetcolor = '\033[0m'


def get_monthcalendar_line(
    date: tuple, 
    width: int = 33 
    ) -> str:
    ''' 月历文本行数据获取:
        (直接获取月历文本数据)
        date: (
            year: int, 999 < y < 10**4
            	month: int 1-12
            	 )
        width: 月历打印宽度
    '''
    text = calendar.TextCalendar().formatmonth(*date).split('\n')[2:-1] # 取月历文本行
    text[-1] = text[-1] + ' ' * (20 - len(text[-1]))
    return '\n'.join([f"{line:^{width}}" for line in text]) # 这种单独处理最后一周的方式更pythonic,保留先前的实现,留置“警醒”:代码没有最好只有更好!😎
    blank = ''
    return '\n'.join([f"{line:^{width}}" if len(line) == 20 else f"{f'{line}{blank:>{20 - len(line)}}':^{width}}" for line in text]) # 这行代码永不执行,留下它作个见证——“还有一种对齐方式”


def get_safedays(
    safestart: list | tuple = None, 
    date: list | tuple = None
    ) -> int:
    ''' 计算年内连续安全无事故天数 '''
    date = datetime(*date) if date else datetime.today()
    safestart = datetime(*safestart) + timedelta(days=1) if safestart else datetime(date.year, 1, 1)
    days = (date - (safestart)).days # 计算日期区间不含当天,本就是两个日期差值;不同于datetime.today().tupletime().tm_yday,含当前日期天数;由于安全日计算是基于上次安全事故日,次日起才是安全日,在此减一修正操作相对简单(逻辑依旧清晰),但直接处理safestart才是最最明晰的逻辑,所以又改了。

    if days < 0:
        raise ValueError(f"{f' 日期设置错误 ':-^{width - 6}}")

    return days


def strfcalendar(
    data: list | tuple, 
    width: int =  42
     ) -> str:
    '''
    日历牌模板:
    
    默认格式宽度42半角字符
    data =
    year, month, day, hour, minute, second, yweek, wday, yday
    (自定义九位时间数组序列,可列表可元组)
    '''
    title = f"\n{blue}\n{' 日历牌 ':=^{width - 3}}\n{resetcolor}\n"
    strfdate = f"{lightgreen}{' {}年{:02d}{:02d}日 '.format(*data[:3]):-^{width - 3}}{resetcolor}"
    timeinfo = ':'.join([f"{time:02d}"  for time in data[3:6]]) # 时分秒格式化
    strftime = f"{gray}{f' 现在 {timeinfo} ':-^{width - 2}}{resetcolor}"
    weekinfo = f" 第{data[-3]:02d}周 星期{'一二三四五六日'[data[-2] ]} "
    strfweek = f"{lightgreen}{weekinfo:-^{width - 5}}{resetcolor}"
    strfyday = f"{gray}{f' 当年第{data[-1]}天 ':-^{width - 4}}{resetcolor}"
    end = f"\n{blue}\n{'':=^{width}}{resetcolor}"
    
    return '\n\n'.join((title, strfdate, strftime, strfweek, strfyday, end)) # str.join组合日历牌格式文本返回


def get_calendar_data() -> list:
    ''' 获取当前日期数据:
    
        直接内库获取九位时间数组,
        time.localtime 
        | datetime.datetime双剑合璧 
    '''
    date = list(datetime.now().timetuple()[:8]) # 取8位时间数组
    date.insert(-2, datetime.now().isocalendar().week) # 插入yweek,一年中的当前iso国际标准周数
    
    return date # 返回自定义九位时间数组


if __name__ == '__main__':
    today = datetime.today()
    date = today.year, today.month
    width = 42
    # 两个途径获取格式化月历文本,效果相同 #
    text = get_monthcalendar_line(date, width)
    print(
        f"\n\n{f' {date[0]}{date[-1]:02d}月 ':=^{width - 2}}"
        f"\n\n{' '.join('一二三四五六日'):^{width - 7}}"
        f"\n{text}"
        f"\n\n{'':=^{width}}"
         )

    print(strfcalendar(get_calendar_data())) 
    safestart = 2025, 3, 14 # 最后一次安全事故
    #safestart = () # 最后一次安全事故(可以为空)
    try:
        print(
        f"\n\n{' 部门安全告示牌 ':*^{width - 7}}"
        f"\n\n{lightgreen}\n{f' 已安全无事故{get_safedays(safestart):03d}天 ':^{width - 7}}{resetcolor}"
        f"\n\n\n{'':*^{42}}"
    	    ) 
    except ValueError as e:
        print(f"\n\n触发错误:\n\n{e}")
    except Exception as e:
        print(f"\n\n其它错误:\n\n{e}")
        



2025  2025  2025


2、算法解析


  解析


2.1 Title


  • 代码解析

  • 代码运行效果截屏图片


Python代码






2025  2025  2025



3、完整源码(Python)







2025  2025  2025


上一篇:
Python的字符串优雅优化策略:特定编码 -> Unicode码点 -> UTF-8(可自定义)(Python利用唯一uni-pot中介打理,任意制式输出(首选uyf-8))



我的HOT博:

  本次共计收集441篇博文笔记信息,总阅读量68.56w。数据采集于2025年01月25日 22:57:22,用时9分29.3秒。阅读量不小于6.00k的有 10 10 10篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:62,785
    点赞:25 收藏:89 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:14,096
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:10,412
    点赞:3 收藏:21 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  4. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:10,318
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  5. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8,471
    点赞:5 收藏:27 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  6. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8,325
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8,142
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6,867
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6,232
    点赞:1 收藏:10 
  10. 我的 Python.color() (Python 色彩打印控制)
    地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    浏览阅读:6,099
    点赞:2 收藏:9 
    (本篇笔记于2022-02-28 22:46:21首次发布,最后修改于2022-03-03 10:30:03)


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新 发笔记被误杀而落马。躺“未过审”还不如回收站 ,回收站还不如永久不见。😪值此年底清扫,果 断移除。留此截图,以识“曾经”。2023-12-31)



2 0 2 5  2 0 2 5  2 0 2 5


老齐漫画头像

精品文章:

  • 好 文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永 久分享,点击跳转 免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置 对象理解python
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法
来源: 老齐教室

◆ Python 入门指南 【Python 3.6.3】

好文力 荐:

  • 全栈领域优质创作者——[寒 佬]博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函 数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代 码编写规范
  • Python的docstring规范(说明文档的规范写法)

相关文章:

  • 算法016——最小覆盖子串
  • 209、不大于n的数的组合(python)
  • Linux(8.4)NFS
  • 一、串行通信基础知识
  • Dufs 文件共享系统,内部文件共享还在用ftp\samba?
  • 100. 岛屿的最大面积
  • Linux安装MySQL5.7.26教程图解
  • 蓝桥杯好题推荐---二位前缀和
  • Flask多参数模版使用
  • AI:Machine Learning Data Science
  • 稳定运行的以PostgreSQL数据库为数据源和目标的ETL性能变差时提高性能方法和步骤
  • 图解AUTOSAR_CP_NetworkManagementInterface
  • 人工智能之数学基础:从线性变换理解矩阵范数和矩阵行列式
  • JavaScript 中的包装类型:概念、作用与使用场景
  • spring启动流程
  • 集成学习(上):Bagging集成方法
  • C# ManualResetEvent‌的高级用法
  • Pytorch学习笔记
  • 书摘 ASP.NET Core技术内幕与项目实战:基于DDD与前后端分离
  • 案例驱动的 IT 团队管理:创新与突破之路:第二章 团队组建:从人才画像到生态构建-2.2.1星型架构 vs 网状架构对比
  • 国务院新闻办公室发布《新时代的中国国家安全》白皮书
  • 烈士沈绍藩遗孤、革命家帅孟奇养女舒炜逝世,享年96岁
  • 央行:货币与物价的关系受多重因素影响,提振物价的关键在于扩大有效需求
  • 中俄元首今年首次面对面会谈,达成哪些新的重要共识?
  • 2025上海科技节将于5月17日开幕,拟设6大板块专题活动
  • 欧派家居:一季度营收降4.8%,目前海外业务整体体量仍较小