环境:win10+python3x

V:1.0

简单实现了一下功能本地测试可用,记录下次接着二次开发用

import datetime

import re

class TimeDifferenceC(object):

'''

1 开始日期和结束日期格式必须相同

如: 2019-07-23 2019-07-24

或如:08:04:12 08:19:53

或如:"2019-07-06 07:08:08", "2019-07-07 08:08:18"

但是不可以日期对时间 2019-07-23和08:04:12

2 格式固定 日期必须使用 "-" 连接 时间必须使用 ":" 连接,日期和时间之间用 " " 连接

'''

def __init__(self, old_time="", new_time="", type_=None):

self.old_time = old_time

self.new_time = new_time

self.type_ = type_

self.Check()

self.split_time()

def Check(self):

'''检查输入的数据是否符合规范'''

sign = True

#对比日期和时间

rule_dt = re.compile(r"^\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$")

if rule_dt.findall(self.old_time) and rule_dt.findall(self.new_time):

print("xxxx-xx-xx h:m:s 格式确认都正确")

self.dt_type = "all"

sign = False

rule_date = re.compile(r"^\d{4}-\d{1,2}-\d{1,2}$")

if sign and rule_date.findall(self.old_time) and rule_date.findall(self.new_time):

print("xxxx-xx-xx 格式确认都正确")

self.dt_type = "date"

sign = False

rule_time = re.compile(r"^\d{1,2}:\d{1,2}:\d{1,2}$")

if sign and rule_time.findall(self.old_time) and rule_time.findall(self.new_time):

print("h:m:s 格式确认都正确")

self.dt_type = "time"

sign = False

if sign:

print(f"{self.old_time} or {self.new_time} 格式不对。格式如下: \nxxxx-xx-xx h:m:s 或者 xxxx-x-x h:m:s")

exit()

def split_time(self):

self.old_time_list = self.old_time.split()

self.new_time_list = self.new_time.split()

def Get(self, time_, type_=None):

if self.dt_type == "all":

if type_ == "y":

return datetime.datetime.strptime(time_,"%Y-%m-%d").year

elif type_ == "md":

return datetime.datetime.strptime(time_,"%Y-%m-%d").month

elif type_ == "h" or type_ == "m" or type_ == "s":

return datetime.datetime.strptime(time_,"%Y-%m-%d %H:%M:%S")

return datetime.datetime.strptime(time_,"%Y-%m-%d")

elif self.dt_type == "date":

#日期类型只能处理 年 月 日

y_m_d = datetime.datetime.strptime(time_[0:10],"%Y-%m-%d")

if type_ == "y":

return y_m_d.year

elif type_ == "md":

return y_m_d.month

else:

return y_m_d

else:

#时间类型只能处理时分秒

return datetime.datetime.strptime(time_,"%H:%M:%S")

def Days(self):

if self.dt_type == "time":

return "只能获得时间类型差值"

date1 = self.Get(self.old_time_list[0])

date2 = self.Get(self.new_time_list[0])

return (date2-date1).days

def Months(self):

if self.dt_type == "time":

return "只能获得时间类型差值"

month1 = self.Get(self.old_time_list[0], "md")

month2 = self.Get(self.new_time_list[0], "md")

return (self.Years())*12+(month2-month1)

def Years(self):

if self.dt_type == "time":

return "只能获得时间类型差值"

year1 = self.Get(self.old_time_list[0], "y")

year2 = self.Get(self.new_time_list[0], "y")

return year2-year1

def Hours(self):

if self.dt_type == "date":

return "只能获得日期类型差值"

return int(self.Seconds()/60/60)

def Seconds(self):

if self.dt_type == "date":

return "只能获得日期类型差值"

sec_old = self.Get(self.old_time, "s")

sec_new = self.Get(self.new_time, "s")

# return (sec_new-sec_old).seconds #不包含日期上的差

return (sec_new-sec_old).total_seconds() #包含日期上的时间差

def Minutes(self):

if self.dt_type == "date":

return "只能获得日期类型差值"

return int(self.Seconds()/60)

测试:

# 计算两个日期差 格式:2019-07-06 07:08:08 或者 2019-07-06

# 计算两个日期差 格式:2019-07-06 07:08:08 或者 07:08:08

tdc = TimeDifferenceC("2019-07-06 07:08:08", "2019-07-07 08:08:18")

# tdc = TimeDifferenceC("2019-07-06", "2019-07-07")

# tdc = TimeDifferenceC("07:08:08", "08:08:18")

print(tdc.Days())

print(tdc.Years())

pritt(tdc.Months())

print(tdc.Seconds())

print(tdc.Minutes())

print(tdc.Hours())

python计算日期间的差值,python 计算时间、日期差值类相关推荐

  1. python获取当前年月日_Python获取、格式化当前时间日期的方法

    Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...

  2. java时间,日期,毫秒值,String的相互转换总结

    java时间日期的各种转换总结以及应用实例 由于工作中经常要用到时间,日期,以及当前时间的毫秒值等 很多时候涉及到了它们之间的相互转换,今天就好好的总结一下. 首先基本介绍一下java中有关时间,日期 ...

  3. c语言日期间的天数,C语言计算两个日期之间的天数

    计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400 计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑 ...

  4. java 天数计算日期_Java 计算日期间天数与日期推算等操作

    package com.yh.emmm.pattern; import java.time.LocalDate; /** * 计算两个日期之间的天数 * * @author 枫茗丿love */ pu ...

  5. Oracle plsql 计算日期间工作日天数

    declare v_fdate date := to_date('2013-10-4','yyyy-mm-dd'); v_ldate date := to_date('2013-10-22','yyy ...

  6. python实现输出日历_python实例9:输出时间日期和当月日历

    问题:暂停一秒输出,并获取当前时间和当月日历. #载入所用模块 import time import calendar import datetime print(time.strftime('%Y- ...

  7. python获取两个日期间的工作日

    python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...

  8. Python 比较日期字符串与当前日期的日期差

    在Python中经常会需要用到时间比较的情况,如爬取特定一段时间的数据,或比较某一时间值和当前时间的差 import datetimedate_str = "2020-07-06" ...

  9. python求和1到100_Python3基础 sum,range 计算1到100的和

    镇场诗: ---大梦谁觉,水月中建博客.百千磨难,才知世事无常. ---今持佛语,技术无量愿学.愿尽所学,铸一良心博客. --------------------------------------- ...

最新文章

  1. [C#基础]Func和Action学习
  2. 认识flex中的sprite
  3. 科普向--详解JavaScript中的数据类型
  4. eclipse安卓工程的构建、配置连接模拟器、安卓工程结构介绍
  5. android 抽屉侧滑冲突,利用DrawerLayout和触摸事件分发实现抽屉侧滑效果
  6. React-Native 相关
  7. mysql主从复制浅析(一)
  8. c语言课程设计类层次图,C语言课程设计————写下流程图! 谢谢
  9. js 容易忽略的小知识点
  10. 数据保护:从“随意架构”到简单可控
  11. 儒家学派有哪些代表人物?
  12. 《实时控制软件设计》团队项目分组
  13. 服务器安卓系统安装教程,安卓系统安装到云服务器
  14. 将制作好的系统启动U盘还原
  15. ENSPLAB笔记:配置VXLAN(分布式网关,BGP EVPN方式)(Part1)
  16. 8253(8254)计时/计数器简介
  17. 初识Python爬虫----如何爬取网络数据
  18. pstack学习笔记
  19. 虹科蕴藏在废物分类中的机器人技术革命
  20. 气动调节阀泄露该怎么办呢?

热门文章

  1. 40页PPT详解:京东大数据基础构架与创新应用
  2. php爆路径方法总结
  3. 微信二维码线下推广是否有效
  4. js(JavaScript):面向对象,Document对象:查找元素对象,修改元素,事件
  5. SpringMVC 学谈 (第五章)
  6. K8s系列之:DNS服务搭建指南
  7. laravel 一次对多个字段进行 increment 或者decrement 操作
  8. 使用python+selenium谷歌浏览器驱动查排名
  9. 高项_第十三章项目合同管理
  10. MFC界面美化之换肤