时间比较,和操作,计算
需要用python的脚本来快速检测一个文件内的二个时间日期字符串的大小,其实实现很简单,首先一些基础的日期格式化知识如下
'''
%a星期的简写。如 星期三为Web
%A星期的全写。如 星期三为Wednesday
%b月份的简写。如4月份为Apr
%B月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %
'''
然后需要了解python中time,datetime,字符串时间之间的转换关系,如下代码是三者之间的转换关系
jsontime = '2017-04-03'
#string->time time.strptime(jsontime,"%Y-%m-%d") ###<class 'time.struct_time'>
#string->datetime
datetime.datetime.strptime(jsontime,"%Y-%m-%d") ##<class 'datetime.datetime'>
#time->string
time.strftime("%y-%m-%d",time.localtime()) ###<class 'str'>
那么有了转换关系以后,比较大小就很容易了,比如我可以把日期字符串转换成time的时间戳来比较大小,如下
import time
def compare_time(time1,time2):
s_time = time.mktime(time.strptime(time1,'%Y-%m-%d'))
e_time = time.mktime(time.strptime(time2,'%Y-%m-%d'))
print 's_time is:',s_time
print 'e_time is:',e_time
return int(s_time) - int(e_time)
result = compare_time('2017-04-17','2017-04-19')
print 'the compare result is:',result
当然也可以利用datetime来比较字符串的大小
示例::
import datetime d1 = datetime.datetime.strptime('2015-03-05 17:41:20', '%Y-%m-%d %H:%M:%S') d2 = datetime.datetime.strptime('2015-03-02 17:41:20', '%Y-%m-%d %H:%M:%S') delta = d1 - d2 print delta.days
转换模块
def show_time(times=None): '''#无参返回当前格式化时间,文本型 如果time = None,则取当前时间, 有参,返回时间类型文本''' if times == None: times = time.strftime( '%Y-%m-%d %H:%M:%S',time.localtime()) return times#返回时间文本型 else: times = datetime.datetime.strptime(times,'%Y-%m-%d %H:%M:%S') return times a = show_time('2018-09-17 09:38:58') print(a) b = show_time() b = show_time(b) print(b) print(b -a)
from datetime import datetime (均返回时间类型) #获取后面的7天 temp = date.today() + timedelta(days=6) #获取前面的1 天 temp = yesterday = date.today()- timedelta(days=1)
#实际情况基本使用下面的较多,直接调库计算,完事
from dateutil.parser import parser
from dateutil import rrule
a = parser()
print(type(a.parse('2018-11-1')))
print(a.parse('20200523'),type(a.parse('20200523')))
#计算时间差
print(rrule.rrule(rrule.DAILY,dtstart=a.parse('2018-11-1'),until=a.parse('20200523')).count())
不是所有的成功都是坐享其成,联系作者v(13147256756)


浙公网安备 33010602011771号