基础知识+注意事项

如果看官时间紧张的话可以直接到文章后面看代码,但是里面可能存在一些疑问,我在这里还是建议各位把这部分看完

首先时间之间的加减法运算是基于时间戳进行的,所以我们这里就必定涉及到字符串表示的时间和时间戳,而这两者之间的转化我们就需要到了时间元组

以下部分带我们介绍一下三者和三者之间的转化

import time
# 1. str表示时间
# str表示时间是要有规范的,比如2022-8-24 19:31
str = "2022-8-24 19:31:38"# 2. 时间元组
# 时间元组是将str表示的时间进行拆分,用元组的格式表示,使用strptime将str变成时间元组
tuple = time.strptime(str, "%Y-%m-%d %H:%M:%S")  # strptime(str,patten)
print(tuple)
# time.struct_time(tm_year=2022, tm_mon=8, tm_mday=24, tm_hour=19, tm_min=31, tm_sec=38, tm_wday=2, tm_yday=236, tm_isdst=-1)# 3. 时间戳
# 时间戳可以由时间元组变化而来,mktime(tuple)
stamp = time.mktime(tuple)
print(stamp)
# 注意时间戳是time库从1970-1-1 8:00:00 开始计时至今的毫秒数量,要注意起始时间是8点,而不是0点
print(time.localtime(0))    # localtime(stamp)将时间戳变成时间元组
# time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)# 注意:strptime的起始时间为1900-1-1 0:0:0,而时间戳只能从1970-1-1 8:00:00开始计算
# 所以如果你使用strptime对[只包含分钟]的字符串转化为时间元组时,则其表示的时间也是从1900开始,这样的时间元组无法转成时间戳
print(time.strptime("19:31", "%M:%S"))
# time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=19, tm_sec=31, tm_wday=0, tm_yday=1, tm_isdst=-1)
# print(time.mktime(time.strptime("19:31","%M:%S"))) # 【报错】OverflowError: mktime argument out of range
# 解决方法很简单,就是从1970年1月1日8点以后开始

代码部分

看了上面的介绍,我们总结出str和时间戳之间的转化规则

  1. 有一个str表示的时间,要将时间变成时间元组,然后才能转化为时间戳
    即:str->(strptime)->时间元组->(mktime)->时间戳
  2. 有了时间戳要先转化为时间元组,才能转化为时间字符串
    即:时间戳->(localtime)->时间元组->(strftime)->str

【注意】 时间元组和时间戳不是随意转化的,因为两者的起始时间不相同!

代码部分

import time
"""
关于如何使用python的time库,对分钟进行加减三元素:str,时间元组,时间戳
1. 有一个str表示的时间,要将时间变成时间元组,然后才能转化为时间戳
即:str->(strptime)->时间元组->(mktime)->时间戳
2. 有了时间戳要先转化为时间元组,才能转化为时间字符串
即:时间戳->(localtime)->时间元组->(strftime)->str结论:无论如何都要通过时间元组作为中间介质,进行时间戳和时间的转化
"""
def minute_operation(t1,t2):"""这个方法表示t1+t2,也就是分钟的累加,看官可以根据自己的需求根据上面的公示和注意事项自己进行调整t1和t2都表示1h以内的时间,格式同12:00类似:param t1::param t2::return:"""stamp1 = time.mktime(time.strptime(f"1970-01-01 8:{t1}", "%Y-%m-%d %H:%M:%S"))# 由于时间戳只能表示1970-01-01 8点以后的时间,所以要从8点开始print("第一个时间戳是{}".format(stamp1))stamp2 = time.mktime(time.strptime(f"1970-01-01 8:{t2}", "%Y-%m-%d %H:%M:%S"))print("第二个时间戳是{}".format(stamp2))sum_stamp = stamp1 + stamp2print("总的时间戳是{}".format(sum_stamp))end_tuble = time.localtime(sum_stamp)print("总时间戳的时间元组{}".format(end_tuble))sum_time = f"{end_tuble.tm_hour - 8}:{time.strftime('%M:%S', (end_tuble))}" # 因为由时间戳变成的时间元组,所以起始时间为8点开始,所以我们减去8,这样起始时间就是0点开始print("总的时间为{}".format(sum_time))return sum_timeif __name__ == '__main__':t1 = "12:40"    # 12分钟40秒t2 = "50:00"    # 50分钟整minute_operation(t1,t2)print(time.localtime(0))

描述的比较乱,请各位谅解
如有问题请看官指正,如有更好方法也欢迎指导

Python基于time库对时间分钟等级进行运算相关推荐

  1. python watchdog占用,python基于watchdog库全自动化监控目录文件

    楔子 有些时候我们需要对一个目录进行监控,检测其内部是否有文件的新增.删除.以及每个文件的内容是否发生变化,这个时候如果是你的话,你会选择怎么做呢? 显然也是一个比较麻烦的工作,倒不是说难,主要是比较 ...

  2. Python基于imageio库制作gif动图

    python安装第三方库imageio imageio 2.15.0 numpy 1.19.5 (1)命令行安装: pip install numpy== 1.19.5 pip install ima ...

  3. python中time库的时间单位是秒

    相信学过C语言的同学应该都知道,C语言time库的时间单位是毫秒. 作为一个Python小白,在接触Python的time库时,我竟下意识的以为Python的time库时间单位也是毫秒,于是出现了之后 ...

  4. [python] 基于diagrams库绘制系统架构图

    Python的Diagrams库允许通过简单的Python代码绘制云系统架构,实现对新的系统架构进行原型设计.Diagrams的官方仓库地址见:diagrams.Diagrams的官方文档和使用示例见 ...

  5. Python基于PyaotoGUI实现Excel插件XLSTAT偏最小二乘运算(PLSR)的批量操作

    目录 需求分析 过程与原理 环境配置 代码实现 设计缺陷 需求分析 由于R语言无法运行,python直接进行偏最小二乘回归无法计算各种指标,Matlab虽然能运行但是效果不好.所以用Excel插件进行 ...

  6. python 有限域函数库_深入比特币之有限域运算

    这是深入比特币系列文章,主要是面向想深入理解比特币原理的开发者. 椭圆曲线加密(elliptic curve cryptography)是比特币交易工作的核心.比特币交易的签名验证离不开椭圆曲线加密. ...

  7. Python基于BeautifulSoup4库爬取亚马逊网页

    引言 我写的这个爬虫非常的简单,没有什么难的逻辑思维,只是简单运用BeautifulSoup进行爬取,相信初学者都可以看懂,就是代码写的比较乱,因为我也是初学者....可能你没有耐心看完,我会尽量一部 ...

  8. python中time库的时间单位是秒而非毫秒

    python小白最近在实习,初次使用python中的time库,在通过websocket与中控收发信息时设置了时间sleep(100),过了一会发现没啥动静,网上给我整了个如何确定现在的时间是几点.同 ...

  9. [python] 基于wordcloud库绘制词云图

    词云Wordcloud是文本数据的一种可视化表示方式.它通过设置不同的字体大小或颜色来表现每个术语的重要性.词云在社交媒体中被广泛使用,因为它能够让读者快速感知最突出的术语.然而,词云的输出结果没有统 ...

最新文章

  1. python实战===图片转换为字符的源码(转)
  2. Matplotlib实例教程(六)直方图
  3. 算法训练营09-深度优先和广度优先
  4. 物联网初步之电阻性电路分析 第三部分 电路分析方法和电路原理
  5. 【Java】实现矩阵的转置
  6. 我国企业对开源社区的贡献度_开源社区对我意味着什么
  7. Must read C++ book list
  8. wireshark协议
  9. 程序员如何才能跨过高级级别,譬如腾讯T3.1/阿里P7
  10. Python基于迁移学习的手势识别实战【图像多分类任务】【实测准确度超过99.5%】
  11. 二本学院计算机专业的考研er如何顺利上岸?
  12. 计算机测绘程序设计实验报告,计算机测绘程序及设计实验报告.doc
  13. 硬盘服务器哪个好用吗,服务器用固态硬盘好还是机械硬盘好
  14. 计算机病毒和恶意软件管理制度,白城师范学院计算机病毒防治管理制度
  15. C#中的NewLine到底是什么字符?
  16. 西雅图“货拉拉”融资$750万,“货运Uber”会成为下一个风口吗?
  17. 《暗黑破坏神》经典爆笑小说
  18. 友善之臂(FriendlyArm)NanoPi无线网络设置
  19. 示波器基础知识100问汇总
  20. Jmeter 压力测试、并发测试、弱网测试

热门文章

  1. DVWA测试XSS跨站脚本攻击三种类型
  2. 感谢题主给我一个反思失败的机会。
  3. WebP_支持:超乎你想象
  4. oracle提示符sqlprompt
  5. 基于S32K144实现TPS929120的基本控制功能
  6. Azure SQL 数据库连接字符串
  7. ssm课程答疑系统的设计与实现毕业设计源码261620
  8. 一起看 I/O | Flutter 3 更新详解
  9. i9 9900k和i9 9900ks有什么区别
  10. 数据库系统原理 - - (1)数据库系统概论