python计算日期间的差值,python 计算时间、日期差值类
环境: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 计算时间、日期差值类相关推荐
- python获取当前年月日_Python获取、格式化当前时间日期的方法
Python获取当前时间_获取格式化时间: Python获取当前时间: 使用 time.time( ) 获取到距离1970年1月1日的秒数(浮点数),然后传递给 localtime 获取当前时间 #使 ...
- java时间,日期,毫秒值,String的相互转换总结
java时间日期的各种转换总结以及应用实例 由于工作中经常要用到时间,日期,以及当前时间的毫秒值等 很多时候涉及到了它们之间的相互转换,今天就好好的总结一下. 首先基本介绍一下java中有关时间,日期 ...
- c语言日期间的天数,C语言计算两个日期之间的天数
计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑闰年的情况,判断闰年的口诀:4年一闰,100年不闰,400 计算两个年月日之间的天数,思路是分别算出日期的总天数然后相减. 要考虑 ...
- java 天数计算日期_Java 计算日期间天数与日期推算等操作
package com.yh.emmm.pattern; import java.time.LocalDate; /** * 计算两个日期之间的天数 * * @author 枫茗丿love */ pu ...
- Oracle plsql 计算日期间工作日天数
declare v_fdate date := to_date('2013-10-4','yyyy-mm-dd'); v_ldate date := to_date('2013-10-22','yyy ...
- python实现输出日历_python实例9:输出时间日期和当月日历
问题:暂停一秒输出,并获取当前时间和当月日历. #载入所用模块 import time import calendar import datetime print(time.strftime('%Y- ...
- python获取两个日期间的工作日
python获取两个日期间的工作日 import datetime # 计算两个日期之间的工作日数,非天数. class workDays():def __init__(self, start_dat ...
- Python 比较日期字符串与当前日期的日期差
在Python中经常会需要用到时间比较的情况,如爬取特定一段时间的数据,或比较某一时间值和当前时间的差 import datetimedate_str = "2020-07-06" ...
- python求和1到100_Python3基础 sum,range 计算1到100的和
镇场诗: ---大梦谁觉,水月中建博客.百千磨难,才知世事无常. ---今持佛语,技术无量愿学.愿尽所学,铸一良心博客. --------------------------------------- ...
最新文章
- [C#基础]Func和Action学习
- 认识flex中的sprite
- 科普向--详解JavaScript中的数据类型
- eclipse安卓工程的构建、配置连接模拟器、安卓工程结构介绍
- android 抽屉侧滑冲突,利用DrawerLayout和触摸事件分发实现抽屉侧滑效果
- React-Native 相关
- mysql主从复制浅析(一)
- c语言课程设计类层次图,C语言课程设计————写下流程图! 谢谢
- js 容易忽略的小知识点
- 数据保护:从“随意架构”到简单可控
- 儒家学派有哪些代表人物?
- 《实时控制软件设计》团队项目分组
- 服务器安卓系统安装教程,安卓系统安装到云服务器
- 将制作好的系统启动U盘还原
- ENSPLAB笔记:配置VXLAN(分布式网关,BGP EVPN方式)(Part1)
- 8253(8254)计时/计数器简介
- 初识Python爬虫----如何爬取网络数据
- pstack学习笔记
- 虹科蕴藏在废物分类中的机器人技术革命
- 气动调节阀泄露该怎么办呢?