import time

# 输入的开始时间和结束时间

# start = "2020-01-03 10:00:00"

# end = "2020-01-03 13:30:00"

# start = "2020-01-03 12:00:00"

# end = "2020-01-03 13:30:00"

#

# start = "2020-01-03 12:10:00"

# end = "2020-01-03 13:00:00"

#

start = "2020-01-03 13:00:00"

end = "2020-01-03 18:00:00"

# 单个时间段过滤

# 要过滤出的时间段

standard_start = "2020-01-03 12:00:00"

standard_end = "2020-01-03 13:30:00"

# 将时间转换为时间戳方便下面 if 语句使用比较

startTimeStamp = int(time.mktime(time.strptime(start, "%Y-%m-%d %H:%M:%S")))

endTimeStamp = int(time.mktime(time.strptime(end, "%Y-%m-%d %H:%M:%S")))

standardStartTimeStamp = int(time.mktime(time.strptime(standard_start, "%Y-%m-%d %H:%M:%S")))

standardEndTimeStamp = int(time.mktime(time.strptime(standard_end, "%Y-%m-%d %H:%M:%S")))

# 定义一下 开始时间的差值和结束时间的差值,为了避免后面两个 if 语句匹配不上时,不能使用这两个变量

startDifferentTime = 0

endDifferentTime = 0

# 规定时间范围 也就是指 正常规定的工作时间

if(standardStartTimeStamp < startTimeStamp < standardEndTimeStamp):

# 说明开始时间在规定时间范围之外

startDifferentTime = standardEndTimeStamp - startTimeStamp

if(standardStartTimeStamp < endTimeStamp < standardEndTimeStamp):

# 说明结束时间在规定时间范围之外

endDifferentTime = endTimeStamp - standardStartTimeStamp

# 算出真正的工作时间 单位为 s

timeDifferent =(endTimeStamp - startTimeStamp) - (startDifferentTime + endDifferentTime) if (startDifferentTime + endDifferentTime) > 0 else (endTimeStamp - startTimeStamp) - 1.5 * 3600

# 判断一下 若真正工作时间 小于 0,则为 0,不小于 0,则为本身

timeDifferent = timeDifferent if timeDifferent>0 else 0

print(timeDifferent)

# 转换工作时间的单位

timeDifferentHour = (timeDifferent / (60*60))

print(timeDifferentHour)

# 多个时间段过滤

timeFilterList = [["2020-01-03 12:00:00","2020-01-03 13:30:00"],["2020-01-03 14:00:00","2020-01-03 16:30:00"]]

standardTimeStamp = 0

startTimeStamp = int(time.mktime(time.strptime(start, "%Y-%m-%d %H:%M:%S")))

endTimeStamp = int(time.mktime(time.strptime(end, "%Y-%m-%d %H:%M:%S")))

for i in timeFilterList:

startDifferentTime = 0

endDifferentTime = 0

standardStartTimeStamp = int(time.mktime(time.strptime(i[0], "%Y-%m-%d %H:%M:%S")))

standardEndTimeStamp = int(time.mktime(time.strptime(i[1], "%Y-%m-%d %H:%M:%S")))

if (standardStartTimeStamp < startTimeStamp < standardEndTimeStamp):

# 说明开始时间在规定时间范围之外

startDifferentTime = standardEndTimeStamp - startTimeStamp

if (standardStartTimeStamp < endTimeStamp < standardEndTimeStamp):

# 说明结束时间在规定时间范围之外

endDifferentTime = endTimeStamp - standardStartTimeStamp

standardTimeStamp = standardTimeStamp + (endDifferentTime + startDifferentTime) if (endDifferentTime + startDifferentTime) > 0 else standardTimeStamp + (standardEndTimeStamp - standardStartTimeStamp)

timeDifferent = endTimeStamp - startTimeStamp - standardTimeStamp

timeDifferent = timeDifferent if timeDifferent > 0 else 0

timeDifferentHour = (timeDifferent / (60*60))

print(timeDifferentHour)

原文链接:https://blog.csdn.net/jueji1998/article/details/112361249

python编程工时计算_python 两个时间段过滤求交集(工时计算)相关推荐

  1. python两数相加代码_一边学编程,一边学语数外,用python编程全排列10以内两数加法...

    原标题:一边学编程,一边学语数外,用python编程全排列10以内两数加法 编程并不神秘 编程只是解决问题的一共方法 python是一门编程语言 python是一种解决问题的编程工具 在小学阶段,学习 ...

  2. Python实现“已知三角形两个直角边,求斜边”

    用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...

  3. python已知两条直角边求斜边,Python实现“已知三角形两个直角边,求斜边”

    用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...

  4. python编程求长方体体积_python编程求长方体体积_【Python编程特训连载80】答案公布:圆柱体体积计算...

    80 [本期题目↓↓↓] 圆柱也称为圆柱体,是三维几何体的一种.一个圆柱所占空间的大小,叫作这个圆柱的体积.圆柱体积公式为: 其中,S 是底面积,h 是高,r 是底面半径.编写一个程序,用户输入底面半 ...

  5. python编程大数据_Python编程基础 Python大数据数据分析高职 计算机 软件技

    内容介绍 本书采用以任务为导向的编写模式,全面地介绍了Python编程基础及其相关知识的应用,讲解了如何利用Python的知识解决部分实际问题.全书共7章,*1章介绍学习Python的准备工作,包括P ...

  6. python编程代码示例_python编程线性回归代码示例

    用python进行线性回归分析非常方便,有现成的库可以使用比如:numpy.linalog.lstsq例子.scipy.stats.linregress例子.pandas.ols例子等. 不过本文使用 ...

  7. python编程print语法_Python 第一节 安装及 print 输出语句—教案

    Python 第一节 安装及 print 输出语句 学习目标: 1 .学会安装 python 编程软件并测试编程环境是否成功 2 .理解字符串和表达式的概念 3 .学会使用 print 语句输出不同内 ...

  8. python编程软件排行榜_Python编程开发工具:这10个对Web开发者最有用的Python包

    Python编程一时间成为了开发人员最喜欢的语言之一.无论是专业的,业余的,还是作为一个Python初学者,都可以从Python编程语言及其程序包中受益.Python已经被证明是当今最具活力的面向对象 ...

  9. python编程思维代码_Python编程快速上手——强口令检测算法案例分析

    本文实例讲述了Python强口令检测算法.分享给大家供大家参考,具体如下: 强口令检测 题目如下: 写一个函数,它使用正则表达式,确保传入的口令字符串是强口令.强口令定义:长度不少于8个字符,同时包含 ...

  10. python io密集 多线程_Python进阶:聊聊IO密集型任务、计算密集型任务,以及多线程、多进程...

    IO密集型任务 VS 计算密集型任务所谓IO密集型任务,是指磁盘IO.网络IO占主要的任务,计算量很小.比如请求网页.读写文件等.当然我们在Python中可以利用sleep达到IO密集型任务的目的. ...

最新文章

  1. APP安全谁之过?爱加密为APP开发者分忧
  2. NuGet安装和使用
  3. Hololens Spatial Mapping功能实现
  4. 后盾网lavarel视频项目---页面post方式提交之后动态弹出错误信息
  5. 数据结构之单向环形列表解决josef问题
  6. iOS原生CIFilter创建二维码
  7. 60K!刚面完Python!这个被Oracle裁掉的程序员求职刷爆全网!
  8. java 整型变量,Java 整型变量
  9. 订阅号如何配置服务器信息,订阅号服务号区别和订阅号启动服务器配置
  10. sqlserver自定义函数
  11. 海康威视工业相机使用
  12. selenium3降级到selenium2详细步骤
  13. v-for 循环生成多个表单元素 给动态生成的表单元素绑定值并且添加校验规则
  14. 服务器硬盘识别不到d盘,windows10系统本地磁盘找不到d盘如何解决
  15. JUC之striped64
  16. 一款好的软件,软件测试必不可少...
  17. 十九、 指派问题 - 匈牙利法 (0-1 整数规划)
  18. 【工具】GIT简单使用
  19. ViewPager嵌套ViewPager,内层ViewPager
  20. CSS粘性定位(sticky)

热门文章

  1. 7. Decorator pattern(装饰器模式)
  2. jeecg导出Excel
  3. angr进阶(2)C++程序的处理
  4. go语言的特殊变量 iota
  5. AndroidStudio关联GitHub
  6. Windows 常用的 CMD 命令
  7. iOS 并发编程之 Operation Queues
  8. STM32的备份寄存器和控制状态寄存器
  9. 一个火车上遇到的女孩所引发的联想
  10. 集成计划排程计划以及管控体系的几个特征